![]() |
|
Модераторы: Akina |
![]()
|
|
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Была у меня программа, которая довольно сносно работала с текстовыми базами (самодельными)
пример: {art}ARTIST {alb}ALBUM {gen}GENRE ......... ........ ....... Была у меня текстовая БД в 5 mb, я ее полностю грузил в оперативку , а там уже работал с ней. Решил перейти на реляционные БД. За месяц переделал прогу с текстовых БД на MSSQL. ОООООООООООООО ужас поиск в MSSQL происходит медленее чем в тексте, загруженном в память. Разве так может быть?????????????????????? P.S. Произвожу поиск по тексту. (%ANY_TEXT%) -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| useless |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 18.5.2004 Репутация: нет Всего: 1 |
Раслабься, так и должно быть!!!!
Всё, что загружено в оперативку, обрабатывается быстрее, чем то что храниться в БД. Выгоду от использования любой СУБД можно получить только при работе в режиме многопользовательского доступа. --------------------
Лучше день потерять, потом за 5 минут долететь !!! |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
4 Artemon БД ведь у тебя лежит на винте. Посмотри скорость доступа к винту и скорость доступа к оперативке и сразу всё поймешь.
|
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Жестоко.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 5 Всего: 207 |
Хм... Возможно дело в неправильной оптимизации. MS SQL Server достаточно по умному кэширует данные и оставляет запрашиваемые данные в оперативке. Лучше приведи примеры запросов которые тормозят и структуру таблиц на которых они проходят.
PS. Базы данных действительно не дадут выигрыша в скорости на небольших массивах данных, потому как неизбежны накладные расходы в виде ретрансляции потоков данных из одной программы в другую, многоступенчатые преобразования: программа-драйверБД-сервер-данные, компилляция запросов и т.д. Но у баз данных есть неоспоримые преимущества - они дают значительное увеличение производительности на больших масивах данных или при многопользовательском использовании, делают системы легко расширяемыми и дают существенные удобства в манипулировании данными. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Вот у меня какой самый тормозной запрос
P.S. В каждой таблице не больше 40000 строк -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 5 Всего: 207 |
Мдя... Ты делаешь декартово произведение... Реально ищется не через 40000, а через 40000*На ARTISTS * на GENRES * SONGS, т.е. реально сервер лопатит десятки миллионов записей.
Чтобы сделать это по человечески наду применить Join (Inner или Outer в зависимости от задачи) Что-то вроде:
Кроме того надо поставить индекс на поле SONG, желательно кластерный Если это не поможет, тогда надо будет ещё поработать над оптимизацией. PS. на 40000 записей сервер должен искать практически мгновенно, никак не долее 1 секунды, если дольше - то проблемы с запросом или структурой данных -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 15 Всего: 35 |
Vit, ты не прав. Artemon использовал inner join по старой системе, так что у него не получилось декартово произведение.
-------------------- Никогда не говори никогда |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 5 Всего: 207 |
Вроде как то, что он использовал - это "Cross Join" по старой системе, но я могу ошибаться, сейчас посмотрю как MS SQL Server меняет план выполнения запроса в этом стиле... Добавлено @ 16:03 Ага, ты прав... Inner Join получается... Тогда, Artemon присылай базу данных, попробую покрутить у себя и подумать как сделать её побыстрее... В любом случае на 40K записей практически любые запросы должны выполняться практически мгновенно... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Vit, огромное спасибо, но нет возможности выслать базу.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 5 Всего: 207 |
Тогда смотри сам в Query Analyser чего твоя квери делает и какая операция жрёт время. Индексы ставить не пробовал?
На вскидку нужны индексы по следующим полям ALBUMS.ID_ARTIST = ARTISTS.ID_ARTIST ARTISTS.ID_GENRE GENRES.ID_GENRE ALBUMS.ID_ALBUM SONGS.ID_ALBUM SONG Желательно кластерный индекс по полю SONG -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
А что значит кластерный?
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 15 Всего: 35 |
В селекте участвует 4 таблицы, если в них нет индексов то происходит довольно ощутимое сканирование таблиц.
Желательно, а то и обязательно индексы по полям: ID_ALBUM в таблицах ALBUMS и SONGS ID_ARTIST в таблицах ALBUMS и ARTISTS ID_GENRE в таблицах ARTISTS и GENRES -------------------- Никогда не говори никогда |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |