|
|
|
Поиск non-exist ключа в descending-индексе (по bitmap'у): ужасный кошмар в статистике
|
|||
|---|---|---|---|
|
#18+
hi all (навеяло что-то объяснениями Влада в core-4302; но там ситуация с индексной навигацией, а тут - другой метод доступа). DDL: Таблица (id int, s varchar), в которую затолкано 10 млн записей с 10 различающимися значениями в поле 's': Код: plaintext 1) при ascend-порядке сравнения строк будет: Код: plaintext Код: plaintext На поле 's' построены два индекса - возрастающий и убывающий: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Вот наглядное представление того, что уложено в каждом из листовых уровней этих индексов (каждый лям ключей выделен цветом): Код: plaintext 1. Если заставить ФБ искать в descend -индексе несуществующий ключ со значением 'qwertyuio o ' ( 10 символов), то бинарным поиском мы должны выйти на 9 -символьный ключ "qwertyuio". Но это означает, что мы вышли на ключ, который СТРОГО БОЛЬШЕ (при просмотре в descend-порядке!), чем искомый. А раз так, то поиск должен быть немедленно прекращён - ведь дальше будут только ключи со значениями, еще более "далёкими" от искомого. Во всяком случае, если аналогично искать в ascend- индексе несуществующий ключ 'q y ' (строго больший, чем наименьшее значение в этом индексе), то происходит именно так: вышли бинарным поиском на 'qw' - и тут же прекратили поиск. А теперь проверяем. 1. Временно вырубаем ascend -индекс и делаем запросик-1 : Код: plaintext 1. 2. 3. 4. И видим, что: 1) ФБ строит битмап... Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 2. Далее оживляем ascend-индекс вводим запросик-2 , в котором where-предикат в exists() будет с таким же "неудобным" ключём, какой был у descend-индекса: Код: plaintext 1. 2. 3. 4. 5. И видим, что: 1) ФБ снова составил битмап: Код: plaintext 1. 2. 2) но статистика - "взлёт ракеты": Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Соб-сно, вопрос простой как 3 коп: на что ушли 6.5 сек и 18 млн фетчей в первом варианте, когда мы рыскали в descend-индексе ? ЗЫ. Проверял на 2.5 и 3.0 - ситуация одинаковая. LI-T3.0.0.30792 LI-V2.5.3.26728 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2013, 18:38:40 |
|
||
|
Поиск non-exist ключа в descending-индексе (по bitmap'у): ужасный кошмар в статистике
|
|||
|---|---|---|---|
|
#18+
Можно сразу в трекер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2013, 19:32:04 |
|
||
|
Поиск non-exist ключа в descending-индексе (по bitmap'у): ужасный кошмар в статистике
|
|||
|---|---|---|---|
|
#18+
ТаблоидЗЫ. Проверял на 2.5 и 3.0 - ситуация одинаковая. LI-T3.0.0.30792 LI-V2.5.3.26728 нет бы проверить на 30803 и 26729, где Влад уже исправил CORE-4302, но лучше же покричать погромче... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2013, 19:34:13 |
|
||
|
Поиск non-exist ключа в descending-индексе (по bitmap'у): ужасный кошмар в статистике
|
|||
|---|---|---|---|
|
#18+
dimitrнет бы проверить на 30803 и 26729, где Влад уже исправил CORE-4302, но лучше же покричать погромче...У меня была такая же реакция сначала ;) Я проверил на свежей 3-ке, вроде воспроизводися... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2013, 19:35:55 |
|
||
|
Поиск non-exist ключа в descending-индексе (по bitmap'у): ужасный кошмар в статистике
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидЗЫ. Проверял на 2.5 и 3.0 - ситуация одинаковая. LI-T3.0.0.30792 LI-V2.5.3.26728нет бы проверить на 30803 и 26729Интересовал прежде всего ФБ-3.х, а статистика запросов стала приемлемой именно на билде 30792. dimitrлучше же покричать погромче...Это не крик, а зарубка на память, для будущего. Мне удобнее создавать темы тут, на sql.ru, даже если они "перекликаются" с трекером. Движок трекера не способен находить элементарное: "CORE 4300" (без дефиса). И как он там индексируется гуглом - тоже непонятно. А google любит sql.ru, он за ним движется с отставанием всего на 1-2 часа. Да и находится всё за 1-2 попытки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2013, 19:57:41 |
|
||
|
Поиск non-exist ключа в descending-индексе (по bitmap'у): ужасный кошмар в статистике
|
|||
|---|---|---|---|
|
#18+
hvladМожно сразу в трекер.скопипастил вышеприведенный пример туда же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2013, 20:03:53 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=106&tid=1564035]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 299ms |

| 0 / 0 |
