Страница 1 из 1
Как составить индексы для таблиц в многотабличном запросе
Добавлено: 11 апр 2006, 12:38
postman
Привет, уважаемый All!
Собственно сабж.
В доке написано, как собирать для однотабличного. Но когда сложный многотабличный запрос(с 2-3 join'ами для миллионных таблиц) не совсем понятно, как задавать для них индексы, чтобы все летало

Предложение не использовать индексы не принимается - объемы не те
Добавлено: 11 апр 2006, 13:04
Merlin
Подумать как бы тебе лично, вместо сервера, было удобно выполнять вот этот запрос и сделать соответсвующие индексы.
Думай как сервер :)
Добавлено: 11 апр 2006, 13:50
postman
Заманчивое предложение - как бы я выполнил этот запрос в голове.
Те индексы, которые я так придумал, как раз и тупят

Опять повторюсь - запрос МНОГОТАБЛИЧНЫЙ, то есть кол-во измерений достаточно большое и какие индексы создавать навскидку не очевидно.
Метод тупого перебора не подходит - таблицы большие и на создание каждой комбинации уйдет уйма времени.
Собственно хотелось бы услышать или получить ссылку на методику определения необходимых индексов на таблицы на основании имеющихся запросов. Переписать запросы тоже не получится - не мое.
Добавлено: 11 апр 2006, 15:23
Ivan_Pisarevsky
Если нет исходника с запросом, то ИСКЛЮЧИТЕЛЬНО методом научного тыка.

И даже если есть и то сразу угадать довольно сложно и не всем дано. По крайней мере я иногда бывает накалываюсь, потом помедитирую над планом и озарение приходит достаточно быстро.
Добавлено: 11 апр 2006, 17:03
kdv
Собственно хотелось бы услышать или получить ссылку на методику определения необходимых индексов на таблицы на основании имеющихся запросов.
нет таких методик. то есть, они есть, но они слишком простые, чтобы по ним чего-то там писать.
1. должны быть FK по связям между таблицами. индексы по FK строятся автоматически
2. у таблиц должны быть первичные ключи. индексы по ним тоже строятся автоматически
3. при желании, если условие в where выбирает мало записей из их исходного большого числа - строим индексы по соотв. столбцам.
и т.п. Одновременно смотрим на индексы в IBAnalyst, и сопоставляем с тем, по чем индексы построены, и что ищем.
Re: Как составить индексы для таблиц в многотабличном запрос
Добавлено: 18 апр 2006, 11:09
Andrew Sagulin
postman писал(а):Привет, уважаемый All!
Собственно сабж.
Для начала определиться с порядком соединения (для чего читать "SQL Tuning" By Dan Tow
http://ftp.anyhost.ru/books/ftp.cdut.ed ... ok-LiB.chm), а потом уже создавать нужные для этого индексы.
Эта же книжка есть на русском в книжных магазинах. Название точно не помню (под рукой сейчас нет). Стоит относительно недорого, написана достаточно простым языком. Даже урывками по вечерам, прочитывается за пару недель, тем более, что читать книгу полностью не обязательно: там много посвящено исключениям, редким при нормальной структуре БД.