Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Оптимизация SQL запроса


DiggerAbstract ©   (2002-04-03 10:55:00) 

предлагаю небольшое обсуждение: некоторые правила которые вы применяете для оптимизации SQL запросов!


Nikolay M.   (2002-04-03 19:03:00) [1]

http://valdis.narod.ru/sql/les17.htm#op_setup

- здесь написано много об "общем", но не соглашусь, что все пункты верны для разных СУБД. Все зависит от оптимизатора запросов и если идет требуется оптимизация на уровне построения запросов, то, наверное, есть смысл воспользоваться анализатором запросов (если таковой есть. В MySQL, к примеру, можно посмотреть какие индексы будут использоваться и т.д.) и ставить эксперименты.


Alexandr   (2002-04-03 13:56:00) [2]

ага денормализация


wicked   (2002-04-03 13:55:00) [3]

по теме
для mssql характерно, что предложения с existsвыполняются иногда в десятки раз быстрее, чем предложения с in... правда, с соответствующей перестройкой запроса... ;)

а вообще, насколько я понял, в оптимизации скорости запросов сами запросы играют не очень большую роль... многое зависит как от сервера БД, так и от его настроек, и от организации ("нормальности") данных... плюс еще и правильное, сбалансированное индексирование...


Delirium   (2002-04-03 12:45:00) [4]

Ну в общем-то различные концепции оптимизации по своей сути едины : выигрываем в скорости - проигрываем в объёме и на оборот. Так при активном использовании временных таблиц (и временных идексов) можно получать результат отличный по скорости исполнения в десятки раз от классического подхода (единый select со множеством join-ов и вложенных запросов). И при этом использовать во много раз больше памяти и дискового пространства сервера. Так что обсуждать тут особо нечего, у каждого сервера БД подходы и методы свои, IMHO.


Reindeer Moss Eater   (2002-04-03 12:26:00) [5]

Дорогой план не обязательно означает долгое выполнение запроса


Sergey13   (2002-04-03 11:54:00) [6]

Я стараюсь писать сложные запросы постепенно, т.е. цеплять каждую таблицу отдельно, и после каждого "прицепа" смотреть план выполнения. Обычно помогает.


Alexandr   (2002-04-03 11:40:00) [7]

наверное, нету общих концепций оптимизации SQL запросов.


DiggerAbstract   (2002-04-03 11:30:00) [8]

повторю еще разок - "общие концепции построения запроса не привязаваются к к.-л. серверу".


Johnmen   (2002-04-03 11:23:00) [9]

> select *
> from (select * from table1 where pole2=...) t1
> join table2 t2 on t1.pole1=t2.pole1

Зависит от сервера - тебе же уже сказали...


DiggerAbstract   (2002-04-03 11:16:00) [10]

ну скажем так - общие концепции построения запроса не привязаваются к к.-л. серверу.
например такое как: не применят вложенные селекты в области перечисления полей(очень сильно тормозит процесс) или например:

select *
from table1 t1
join table2 t2 on t1.pole1=t2.pole1
where t1.pole2=...

и др.

select *
from (select * from table1 where pole2=...) t1
join table2 t2 on t1.pole1=t2.pole1

второй запрос будет работать быстрее, т. к. мы обрубаем выборку раньше.
и т. п. вещи


Alexandr   (2002-04-03 11:06:00) [11]

а нафиг это тебе.
На эту тему книги писать можно, при том что для каждого сервера свою.

Это целое искусство


DiggerAbstract   (2002-04-03 11:00:00) [12]

можешь указать тип сервера


Alexandr   (2002-04-03 10:59:00) [13]

зависит от сервера


Наверх

Титульная страница Поиск, карта сайта Написать письмо