|
|
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
FB 2.5.3. Подскажите, граждане. Запрос 1: Код: sql 1. 2. 3. 4. 5. 6. Код: plaintext 1. Запрос 2: Код: sql 1. 2. 3. 4. 5. 6. Код: plaintext 1. С каких пор неравенство не использует индекс? Или это хитрый выкрутас оптимизатора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 10:03:31 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
CyberMax, если индекс уникальный, то его просто не выгодно использовать, т.к. все кроме одного значения будут выбраны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 10:12:34 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
CyberMaxС каких пор неравенство не использует индекс? строгое неравенство никогда не использовало индекс. Ни в одной СУБД, насколько я в курсе. Теоретически тут возможен полный индексный скан, но фуллскан таблицы будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 10:21:52 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Для неуникального ровно та же ситуация. Единственный случай, когда индекс имеет смысл использовать, это в случае выполнения двух условий: - большинство записей в таблице ID = 1 - индекс имеет гистограмму значений, чтобы это определить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 10:26:35 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Эвон как. Буду знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 10:52:45 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
WildSeryЕдинственный случай, когда индекс имеет смысл использовать, это в случае выполнения двух условий: - большинство записей в таблице ID = 1 - индекс имеет гистограмму значений, чтобы это определитьЕсть подозрение, что сканирование индекса начинает выигрывать у фулл-скана, когда надо выбрать уже 97% (девяносто семь процентов) записей, ну и тем паче - когда меньше этого порога. иллюстрация: 10 млн записей, селективность = 0.001, равномерное распределение int-значений Код: plaintext 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. Test: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Trace: Код: plaintext 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. 35. 36. Похожий результат, только с uuid_to_char-значениями, был показан тут , на FB 2.5 RC2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 23:35:48 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
ТаблоидЕсть подозрение есть подозрение, что людей долбит склероз, или иная болезнь. Чтобы CyberMax "не знал", что field <> value не использует индекс - это какой то пендец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 00:09:32 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Таблоид, а если на сборке с экстентами проверить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 08:54:35 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Таблоид, вывод gstat покажи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 10:49:28 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
dimitrgstat покажи Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 11:47:03 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Симонов Дениса если на сборке с экстентами проверить?то же самое. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 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. Код: plaintext 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. ЗЫ. show: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 12:19:20 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
PS. статистика natural-скана из isql, для сборки с extent'ами =vs= без экстентов, вторые запуски по каждой (дабы исключить вариант "разогревания" базы и reads >0): LI-T3.0.0.30813 Firebird 3.0 Extents Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. LI-T3.0.0.30889 Firebird 3.0 Alpha 2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Если экстенты как-то и влияют на скорость выборки, то в упор не вижу здесь, как именно. Изменённые параметры конфигов: LI-T3.0.0.30813 Firebird 3.0 Extents : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 12:32:32 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
ТаблоидЕсть подозрение, что сканирование индекса начинает выигрывать у фулл-скана, когда надо выбрать уже 97% (девяносто семь процентов) записей т.е. чтение 35000 страниц быстрее, чем чтение 30000 страниц? Чудно как-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 15:16:09 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
dimitrЧудно как-то.и тем не менее, это так. И при page_size = 4096 - то же. isql Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. trace Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 16:11:53 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Еще подумалось (вдруг), что это при большом кеше такое. Вернул кеш в дефолтный, но всё так и осталось: Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. А затем подумкалось, что это из-за вычисления выражения ("x+0") могло быть. Добавил поле y int, заполнил его значениями из поля `x`. Повторил запросы - всё тоже самое, кроме ПЕРВОГО запроса: Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Объясните, плз: что за мусор собирал первый запрос, который был сразу после начального апдейта поля `y` ? Если он удалял "старые" версии записей, в которых в поле `y` были NULL'ы, то... как ФБ мог так быстро записать эти 10 млн null'ов при alter table + commit, если трейс этого ДДЛ показывает вот это: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 16:46:09 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Таблоидкак ФБ мог так быстро записать эти 10 млн null'ов при alter table + commit он их не добавлял. Просто добавил поле в заголовке таблицы и увеличил номер формата. При чтении потом просто старые записи преобразуются к новому формату на лету. Есть подозрения что при большом количестве форматов должно быть существенное замедление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 17:01:40 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Симонов Денисувеличил номер формата. <...> при большом количестве форматов должно быть существенное замедление.что такое "номер формата" ? и как можно нагади достичь большего кол-ва форматов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 17:07:12 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Таблоид, http://www.ibase.ru/devinfo/metaver.htm достичь легко достаточно много раз сделать Код: sql 1. 2. количество таких модификаций ограничено числом 255. Неужели ты этого не знаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 17:14:02 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Симонов Денисколичество таких модификаций ограничено числом 255 поправлюсь для каждой таблицы, потом только б/р ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 17:17:05 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
Симонов Денисколичество таких модификаций ограничено числом 255. Неужели ты этого не знаешь?не, это я знаю, конечно же (ИБЭ же заботливо показывает, что "NNN ... left" :)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 17:36:26 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
kdv, В голове отложилось, что все операции сравнения используют индекс. А тут случайно наткнулся на неравенство и натуральный перебор в плане и как-то удивился. Кстати, про этот нюанс написано где-нибудь в твоих статьях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 07:55:00 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
CyberMax, нет, не написано. мне казалось, это настолько очевидно и общеизвестно, что не требует упоминания. У меня этого нет даже в "курсовой" статье. Это как "вот гравитация, вот дорога, вот машина, у нее внизу колеса, колеса крутятся". Поэтому вопроса, может ли машина ездить на крыше, не возникает :-) Перечитай статью dimitr про методы доступа, про индексный поиск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:46:41 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
kdvвот гравитацияда, но хотелось бы еще и причины антигравитации узнать. А именно: почему индексный поиск начинает обгонять натурал при 97% выбранных записей (тесты см выше). Проверь у себя - может, другие результаты будут ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:45:43 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
позанубствую... неравенства вида Код: sql 1. Код: sql 1. тоже не используют индекс по столбцу FIELD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 15:42:25 |
|
||
|
Неравенство в условии и индекс
|
|||
|---|---|---|---|
|
#18+
fd00chпозанубствую... неравенства вида Код: sql 1. Код: sql 1. тоже не используют индекс по столбцу FIELD?Всем нынешним и будущим нечитателям посвящается ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 15:48:13 |
|
||
|
|

start [/forum/topic.php?fid=40&gotonew=1&tid=1563804]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
10ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 473ms |

| 0 / 0 |
