Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Вниз

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


DiggerAbstract   (2002-04-03 10:55) [0]

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



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

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



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

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



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

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

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



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

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

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

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



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

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

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



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

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



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

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



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

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



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

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



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

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



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

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

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



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

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



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

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

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




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.028 c
1-80982           lipskiy               2002-04-11 00:23  2002.04.25  
Почему иногда перестает работать всплывающая подсказка в IDE?


1-80860           Dx7                   2002-04-13 13:42  2002.04.25  
DDBLTFAST_DESTCOLORKEY & fx .ddckDestColorkey .dwColorSpaceHighVa


1-80872           NewOne                2002-04-11 17:16  2002.04.25  
ServicePack`s


1-80967           DenKop                2002-04-11 13:35  2002.04.25  
Сообщение другой программе.


3-80755           mage                  2002-04-04 11:23  2002.04.25  
Как получить логин и пароль юзера, подключившегося к базе?