Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос с NOT IN (SELECT) - не использует индекс?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: plaintext 1. 2. 3. 4. 5. 6. 7. То что внешняя таблица (test_nop) сканируется польностью, это понятно. Но искать каждую запись в подзапросе, мне кажется, нужно по индексу... Или я неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 16:25 |
|
||
|
Запрос с NOT IN (SELECT) - не использует индекс?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. а так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 16:40 |
|
||
|
Запрос с NOT IN (SELECT) - не использует индекс?
|
|||
|---|---|---|---|
|
#18+
SELECT abonid FROM test_nop EXCEPT SELECT abonid FROM test_sald; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 16:51 |
|
||
|
Запрос с NOT IN (SELECT) - не использует индекс?
|
|||
|---|---|---|---|
|
#18+
to mwolf : Добрый ты человек, боярин ;-) А если б я попробовал не подумав? А ведь меня интересует разность, а не почти полное декартово произведение... to LeXa NalBat : Действительно, с EXCEPT работает удовлетворительно. Если в варианте с NOT IN я вообще не дождался результата (более двух часов), то с EXCEPT отработало за 6 секунд. Самое удивительное, что, судя по плану, оно ухитрилось сделать это все же без использования индексов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. А решить проблему удалось переписыванием запроса через NOT EXISTS: Код: plaintext 1. 2. 3. Вот здесь оно наконец-то подхватило индекс. Код: plaintext 1. 2. 3. 4. 5. 6. В пожелтевших рукописях встретил упоминания, что в древних версиях сервера (до 7.2) была такая проблема - IN работало медленне, чем EXISTS, при прочих равных условиях. Выходит, где-то что-то недофиксили... Пойду переписывать все IN на EXISTS... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2007, 15:16 |
|
||
|
Запрос с NOT IN (SELECT) - не использует индекс?
|
|||
|---|---|---|---|
|
#18+
попробуйте еще select a.abonid from test_nop as a natural full outer join test_sald as b where b.abonid is null или если выругается select a_abonid from ( select a.abonid as a_abonid, b.abonid as b_abonid from test_nop as a natural full outer join test_sald as b ) as c where b_abonid is null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2007, 16:03 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34748365&tid=2005124]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 326ms |

| 0 / 0 |
