Форум "DataBase и SQL"
Язык запросов баз даных
#0 DrewBlin © 13.10.07 15:26:32 - 16.10.07 11:00:36 Убыстрение запросаВсем привет! Помогите, пожалуйста, советом. Есть такая выборка: (внутренняя выборка делается по более сложному условию). Внутренняя выполняется за 0.001 сек. Вся целиком - за 2.43 сек. Если вместо >= и <= писать просто = , то время выполнению 0.003. (Такой эксперимент проводил исключительно чтоб найти что тормозит выполнение). Индексы созданы, в таблице порядка 100 000 записей. Результат внутреннего запроса - около 30 записей. СУБД MySQL 5 А теперь сам вопрос: можно ли заставить (если да - то как) эту выборку работать быстрее?
|
|
А если с джойном попробовать? select p.a,p.b,p.c from table_p p JOIN table_p s ON s.c in (12,13,14) AND p.a <= s.a AND p.b >= s.b |
|
#2 DrewBlin © 14.10.07 17:15:33
Неа. К сожалению джойн только замедляет, причем значительно... |
|
#3 Andrey © 15.10.07 15:27:02
А какие индексы созданы? По каким полям? По (table_p.a, table_p.b) есть? По (table_p.c)? А они используется? Какова их селективность? Каков план выполнения запроса? Каков размер финальной выборки? Чем-то чую что задачка связана с определением пересечения временных интервалов. |
|
#4 ZeroDivide © 16.10.07 11:00:36
Поменяй их местами select p.a,p.b,p.c from (select a,b,c from table_p p where c in (12,13,14)) s, table_p p where p.a<=s.a and p.b>=s.b |
Написать ответ |
|
