Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
16.11.2009, 00:03
|
|||
---|---|---|---|
|
|||
Помогите оптимизировать запрос и построить правильные индексы |
|||
#18+
Здравствуйте! Помогите, пожалуйста, с оптимизацией запроса и построением индексов, если у Вас найдется на это немного времени. Заранее извиняюсь - не силен в sql. Имею две базы данных sqlite. В первой есть такая таблица CREATE TABLE mgWordsRelations ( id INTEGER PRIMARY KEY, id_norm INTEGER, id_norminrel INTEGER, UNIQUE (id_norm,id_norminrel) ) А во второй такая: CREATE TABLE wform ( id INTEGER PRIMARY KEY, wordForm TEXT, ancode TEXT, wordNorm INTEGER ) Данные хранятся в разных таблицах из-за особенностей архитектуры, подключаю вторую таким образом: ATTACH DATABASE 'second.db' AS Lang Мне было необходимо выполнить следующий запрос: SELECT wordForm FROM Lang.wform WHERE (ancode='someAncode') AND (wordNorm IN (SELECT DISTINCT id_norminrel FROM mgWordsRelations WHERE id_norm IN (SELECT wordNorm FROM Lang.wform WHERE wordForm='someWord') ) ) Быстродействие меня не устраивало и я попробовал переписать его с использованием inner join: SELECT wf1.wordForm FROM Lang.wform wf1 JOIN mgWordsRelations wrel ON (wf1.wordNorm = wrel.id_norminrel) JOIN Lang.wform wf2 ON (wrel.id_norm = wf2.wordNorm) WHERE wf2.wordForm = 'someWord' AND wf1.ancode='someAncode' Прибавки в скорости это не дало, а наоборот значительно ее уменьшило. Подскажите - существуют ли дополнительные пути оптимизации запроса и, главное, какие корректные индексы нужно создать для ускорения выполнения того или иного варианта выполнения данного запроса? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=54&mobile=1&tid=2009413]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 484ms |
0 / 0 |