Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2010, 09:24   #1
za4ot
Пользователь
 
Регистрация: 06.04.2008
Сообщений: 22
По умолчанию Оптимизация запроса

Всем привет,
есть sql запрос который проверят наличие в базе индекса по 2м полям на определенную таблицу. Проблема в том что если нужно будет искать индекс состоящий из 5ти полей, то при данном подходе приходится 5 раз присоединять sysindexes, sysindexkeys, syscolumns. Как бы оптимизировать запрос таким образом чтобы можно было обойтись без всех этих присоединений, проверяя наличие колонок в индексе как WHERE sc.name in ('ColumnName_1','ColumnName_2',...) ?

Код:
SELECT si1.name
FROM sysindexes si1
INNER JOIN sysindexes si2 ON si1.name = si2.name
INNER JOIN sysindexkeys sik1 ON si1.id = sik1.id
AND si1.indid = sik1.indid
INNER JOIN sysindexkeys sik2 ON si2.id = sik2.id
AND si2.indid = sik2.indid
INNER JOIN syscolumns sc1 ON sc1.id = si1.id
AND sc1.colid = sik1.colid
AND LOWER(sc1.name) = LOWER('ColumnName_1')
INNER JOIN syscolumns sc2 ON sc2.id = si2.id
AND sc2.colid = sik2.colid
AND LOWER(sc2.name) = LOWER('ColumnName_2')
WHERE si1.id = OBJECT_ID('TableName')
za4ot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация SQL запроса Phantom SQL, базы данных 4 24.09.2009 16:07
Оптимизация Viper1287 Операционные системы общие вопросы 7 13.09.2009 15:33
Оптимизация sql запроса в хп eda SQL, базы данных 3 28.07.2009 11:57
Оптимизация Flangini Microsoft Office Excel 5 11.06.2009 11:48
Оптимизация Terran Общие вопросы Delphi 3 03.05.2008 19:03