|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
Необходимо оптимизировать sql-запрос, но я ещё не волшебник, поэтому прошу помочь советом. Есть запрос следующего вида: Код: sql 1. 2. 3. 4. 5.
Выполняется он около часа. При этом если закомментить одно из условий в join-е или заменить OR на AND, то запрос выполняется 8 секунд. Хочу избавиться от условия OR. Замена Код: sql 1.
на Код: sql 1.
или Код: sql 1.
нужного эффекта не даёт. Мб можно заменить исходную конструкцию на UNION? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Взлетит? Или такие вещи как-то иначе делаются? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 20:47 |
|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
brbrbrМб можно заменить исходную конструкцию на UNION? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Взлетит? Или такие вещи как-то иначе делаются?Это обычный способ. Должен взлететь. Хотя ничего не было сказано про индексы. И звёздочка в данном случае - плохо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 20:51 |
|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
iapbrbrbrМб можно заменить исходную конструкцию на UNION? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Взлетит? Или такие вещи как-то иначе делаются?Это обычный способ. Должен взлететь. Хотя ничего не было сказано про индексы. И звёздочка в данном случае - плохо! Понял, спасибо. Звёздочка для примера, чтобы не нагромождать. Некластерные индексы имеются по каждому из используемых полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 20:58 |
|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
И union тоже плохо. Нужно union all. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 21:18 |
|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
Не, наврал. union нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 21:21 |
|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
invm, с union all будут дубликаты ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 21:35 |
|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
brbrbr, а чтобы два раза не писать select..join и фильтры, можно сделать так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
тут строгое равенство после ON можно заменить на exists(.. intersect ..), в зависимости от того как планируете обрабатывать NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 00:31 |
|
Оптимизация запроса - нужен совет
|
|||
---|---|---|---|
#18+
Shakill, поправка насчет дубликатов: вместо union all -> union, либо вместо select t2.field2 -> select t2.field2 where t2.field2 <> t2.field1, в зависимости от NULL, опять же ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 00:37 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1700184]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
27ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 430ms |
0 / 0 |