|
|
|
Оптимизация подзапроса
|
|||
|---|---|---|---|
|
#18+
Существует запрос который работает очень долго 20 секунд из за подзапроса. SELECT `kv`.*, (SELECT COUNT(*) FROM kvartiri pk WHERE (pk.telefon = kv.telefon OR pk.telefon = kv.telefon_content OR pk.telefon = kv.telefon_content2 OR pk.telefon_content = kv.telefon OR pk.telefon_content = kv.telefon_content OR pk.telefon_content = kv.telefon_content2 OR pk.telefon_content2 = kv.telefon OR pk.telefon_content2 = kv.telefon_content OR pk.telefon_content2 = kv.telefon_content2) AND kv.is_active >= 1 ) AS `num_dublikat` FROM `kvartiri` AS `kv` ORDER BY `kv`.`date_add_base` DESC Этот скрипт выбрает все записи из базы в котором считается число дубликатов телефона, тоесть для каждой записи на сайте выводится ссылка "дубликатов (10)" Тормозит запрос вот эта строка: (SELECT COUNT(*) FROM kvartiri pk WHERE ...... Может есть возможность сделать выборку быстрее ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 23:50 |
|
||
|
Оптимизация подзапроса
|
|||
|---|---|---|---|
|
#18+
Нужна отдельная таблица для хранения данных о количестве. Если SELECT COUNT(*) может давать большие числа, то быстрым его никак не сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 01:00 |
|
||
|
Оптимизация подзапроса
|
|||
|---|---|---|---|
|
#18+
mnbcz, Пользуйтесь специальными тэгами для оформления постов. Невозможно же читать! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 01:46 |
|
||
|
Оптимизация подзапроса
|
|||
|---|---|---|---|
|
#18+
mnbcz, Надо избавляться от кучи OR-ов. Я бы предложил телефоны вынести в отдельную таблицу в одно поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 01:52 |
|
||
|
Оптимизация подзапроса
|
|||
|---|---|---|---|
|
#18+
mnbcz, Скалярный коррелированный подзапрос нужно переписать в форму деривед табле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 03:53 |
|
||
|
Оптимизация подзапроса
|
|||
|---|---|---|---|
|
#18+
mnbcz, у тебя тормозит не подзапрос, а все вместе. к тому же отвратный дизайн базы, да и вообще все плохо. оптимизировать что-то бессмысленно. редизайн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 07:31 |
|
||
|
Оптимизация подзапроса
|
|||
|---|---|---|---|
|
#18+
miksoftmnbcz, Надо избавляться от кучи OR-ов. Я бы предложил телефоны вынести в отдельную таблицу в одно поле. да не только это, у него же основной запрос вообще без фильтра, ВСЕ записи, и еще потом на каждую - дубликаты с кореляцией по OR. производительность обратнопропорциональна квадрату числа записей в этой таблице. не заработает никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 07:36 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39210649&tid=1831941]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 455ms |

| 0 / 0 |
