Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
Приветствую, Не пойму почему используется Seq Scan вместо индекса, обходит 500М записей ради ~1300. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Запрос Код: plsql 1. 2. 3. 4. 5. 6. Естественно есть primary индекс на outputs.id: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 15:38 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
nateless, потому что база считает что там не 1300 записей будет а Код: plaintext 1. 2. 3. 2539646 записей.... и тут уже появляются варианты в таком случае как будет эффективнее. Вот не надо делать =ANY(ARRAY[]) никогда вместо IN так как он не будет нормально количество строк в ответе оценивать. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 15:51 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, вообще то это проблема планировщика. и колхозников, его писавшего. 2ТС пж -- изначально поделие студентов. толпы математиксов над ним не чахли. поэтому не стоит удивляться его поведению. но изучать. и пользоваться "как есть". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 16:43 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Попробовали с IN, почему-то в explain выдает все тот же ANYб может быть что он сам преобразует в этот формат? Код: plsql 1. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 16:48 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
qwwq, Ну с MySQL мы тоже наплевались в свое время, особенно после крашей. У постгры есть свои минусы, но данный хочется все-таки обойти :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 16:54 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
Да, нашел вот на оф мейллисте postgresql: 8.2 will treat them equivalently (in fact, it converts IN (...) to = ANY (ARRAY[...]) !). So depending on your time horizon, you might wish to stick with whichever is cleaner for your calling code. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 16:58 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
При замене ANY на ALL получается сократить время чуть более чем в два раза Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 17:02 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
nateless8.2 will treat them а у вас какой ? если больше 9.3 и вы знаете , что возврат из под ANY заведомо невелик -- попробуйте запинать лейтералами (вместо иннер джойнов) с хеш--джойна на нестед луп по результатам ина (ANY) по i0. если же простынка эни возвратит на деле лямы -- вы проиграете хеш--джойну очень и очень много и да , проанализировать i0 наверное невредно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 17:34 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
т.е. пофантазируйте на тему Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 17:44 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
nateless, пробуй с подзапросами например : SELECT * FROM (SELECT * FROM inputs WHERE ...) sq1 JOIN t2 JOIN t3 Идеальный план для этого случая должен выглядеть как NL по индекс сканам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 17:46 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
Получилось решить таким запросом, выбрал по индексам и быстро. Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 18:11 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
nateless, сколько элементов у вас в in в исходном запросе? покажите выводы запросов Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 18:36 |
|
||
|
Проходит полный Seq Scan вместо индекса.
|
|||
|---|---|---|---|
|
#18+
nateless, а если так? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 22:17 |
|
||
|
|

start [/forum/topic.php?fid=53&gotonew=1&tid=1996807]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 286ms |

| 0 / 0 |
