|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
с индесом запрос за 20 сек. выполняется, без индекса 15. версия (виндовс 7) 3.30.1 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b данных 383 тысячи записи: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:47 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
прямо в творческом тупике нахожусь. спасите - помогите ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 15:48 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
а если так попробовать Код: sql 1.
или так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:08 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Посмотри разницу в планах выполнения EXPLAIN QUERY PLAN , может какие мысли возникнут. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:21 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Еще интересно какая часть записей выбирается: Код: sql 1.
Если это более 20% записей (~80 тыс. у тебя), то тут от использования индекса только тормоза, т.к. при скане идет последовательный перебор (последовательное чтение всех записей на странице), а по индексу случайное чтение (прочитать указатель на очередную запись, прочитать нужную страницу, прочитать с нее нужную запись и т.д.). Возможно при индексном поиске нужные страницы выдавливаются из кэша и поэтому читаются с диска по несколько раз. Попробуй увеличить кэш : Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:46 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
IMHO & AFAIK Например фрагментация данных в таблице При считывание всей таблицы - чтение происходит последовательно При работе через индекс - чтение происходит поблочно, при этом в логической последовательности сортировки данных != физической последовательности блоков на диске/файле. Мало того, если данные не помещаются в кэш, некоторые блоки могут считываться и по несколько раз IMHO (не проверял). Для Oracle такие вещи обходил coverage index'ом. Когда все поля из таблицы дублировались в самом индексе. В этом случае, порядок обращения совпадал с порядком следования блоков Умеет ли SQL Lite оптимизировать обращение к таблице при наличие coverage index'а - не знаю p.s. В некоторых СУБД бывают index organized table, но в моей версии Oracle они работали "странно". Coverage index работал лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:48 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Из инета. Не проверял. В доке не нашел: If you create an index on all your columns, SQLite will sometimes execute a select using only the index, but you'll be storing your data twice. http://sqlite.1065341.n5.nabble.com/index-organized-table-compression-td2577.html ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 16:53 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Скорее всего это действительно фрагментация данных приводящая к тому, что подчиняясь индексу движку приходится дергать одну и ту-же страницу таблицы несколько раз. Чтобы увидеть скорость работы с одним только идексом, попробуй сделать индекс на (Longitude, ObjectId, ObjectName). А потом выбрку Код: sql 1.
В этом случае все данные для запроса будут уже хранится в индексе и таблицу не надо будет трогать вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 17:38 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Dima T а если так попробовать Код: sql 1.
или так Код: sql 1.
с утра об этом подумал, результаты одинаковые для всех трех выражениях. 1 оба плана Код: plaintext 1. 2. 3.
Данных добавил больше, там один или две трека (значит значения меняются достаточно плавно). Несколько раз добавил одно и тоже. Код: plaintext 1. 2. 3. 4. 5. 6.
для 30.5 30.6 выбираю 7 процентов (треть от одной пятой) Код: sql 1. 2. 3. 4. 5.
запрос '30.5 30.6 ' с индексом - 9 секунд выполняется без индекса 8 или 7. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 11:02 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
White Owl Чтобы увидеть скорость работы с одним только идексом, попробуй сделать индекс на (Longitude, ObjectId, ObjectName). А потом выбрку Код: sql 1.
В этом случае все данные для запроса будут уже хранится в индексе и таблицу не надо будет трогать вообще. йопть я об этом никогда не думал. с индексом работает 2 секунды размер бд 499м без индекса работает 5 секунд размер бд 300м щас сделаю дефрагментацию диска и повторю исходный запрос ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 11:14 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Код: sql 1.
1 сек с индексом, 5 сек без индекса чуть лучше Код: sql 1.
9 сек с индексом, 8 сек без индекса ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 11:59 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Кэш пробовал увеличить? 22029078 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 13:22 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Dima T Кэш пробовал увеличить? 22029078 с индексом стало на секунду быстрее 7 и 8 (без индекса). Будем надеятся, что в сложных селектах, где я буду только айди извлекать из такой таблицы пользы будет больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 19:27 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
tchingiz Dima T Кэш пробовал увеличить? 22029078 с индексом стало на секунду быстрее 7 и 8 (без индекса). Будем надеятся, что в сложных селектах, где я буду только айди извлекать из такой таблицы пользы будет больше. Попробуй понять что я спросил ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 20:13 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
Dima T tchingiz пропущено... с индексом стало на секунду быстрее 7 и 8 (без индекса). Будем надеятся, что в сложных селектах, где я буду только айди извлекать из такой таблицы пользы будет больше. Попробуй понять что я спросил от зануда. Докладываю: после того как я добавил кеш, стало лучше. далее, по предыдущему посту. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 21:48 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
tchingiz ... Будем надеятся, что в сложных селектах, где я буду только айди извлекать из такой таблицы пользы будет больше. конечно не больше. А относительная скорость почти наверно ухудшится. что-то вам про индексы узнать было бы полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 23:00 |
|
выборка с индексом медленее, чем без индекса +
|
|||
---|---|---|---|
#18+
booby tchingiz ... Будем надеятся, что в сложных селектах, где я буду только айди извлекать из такой таблицы пользы будет больше. конечно не больше. А относительная скорость почти наверно ухудшится. что-то вам про индексы узнать было бы полезно. это в расчете на запрос вида Код: sql 1.
при условии, что индекс создан по значениям Longitude ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 23:02 |
|
|
start [/forum/topic.php?fid=54&fpage=2&tid=2008371]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 245ms |
total: | 372ms |
0 / 0 |