|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
Код: sql 1.
svod - это 5,3 млн. записей общим объемом 930 МБ есть индексы, в т.ч. по TIN и PIN Дождаться результата невозможно! А если выбросить индексный файл - 0,5 сек Почему? Какой механизм? Просто интересно... Спасибо за участие! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2018, 17:53 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
Redrik, 1. индексы не соответствуют запросу; 2. наличие активного индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2018, 18:38 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
правильный проходящий, спасибо за отзыв в выходной вечер! :) 1) индексы простейшие, поля такие: PIN - C(10) TIN - N(10,0) 2) активный индекс? - ни в коем случае! - это дело известное... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2018, 19:07 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
Redrikправильный проходящий, спасибо за отзыв в выходной вечер! :) 1) индексы простейшие, поля такие: PIN - C(10) TIN - N(10,0) Пока что здесь описаны поля, а не выражения индексов. Индексные выражения ТОЧНО такие же? Точно? Reindex давно делали? ps: Сколько раз мне говорили, пробивая себе пяткой в грудь, что "индексы есть, нужные", но потом, при ближайшем рассмотрении всё оказывалось совершенно по-другому. В том числе и с пониманием стучащими в грудь понятий "индекс", "индексное выражение", "необходимый индекс!. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2018, 19:29 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
Зачем так? Может сразу Код: sql 1.
Подзапросы штука мутная. В фоксе не пользуюсь ими. В MSSQL бывает, но и ему крышу срывает иногда. В общем случае делаю так Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2018, 19:45 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
RedrikПочему? Какой механизм? Просто интересно... SYS(3054) посмотри что выдаст ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2018, 19:50 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
правильный проходящий....пробивая себе пяткой в грудь... Просто не хочу грузить лишними буквами, да и не студент я давно :) Pin - C(10) -> INDEX ON Pin TAG Pin Tin - N(10,0) -> INDEX ON Tin TAG Tin REINDEX точно не нужен - индексы сделаны только и что с нуля (уточню - CDX не было вообще)! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 21:35 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
Dima TЗачем так? Может сразу Код: sql 1.
Не оно! Условно: Pin - код человека, Tin - код фирмы Мне нужны все люди по всем фирмам, где был замечен конкретный человек... ;) Подзапросы тоже не люблю, но как-то так сложилось и немного ошарашило! SYS(3054) - посмотрю - отпишусь Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 21:40 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
Мрак! Урезал базу с 5 млн записей до 0.5 млн - не дождался! Оставил случайных 100 Кб... Код: sql 1.
Rushmore optimization level for table svod: none Using index tag Pin to rushmore optimize table svod Rushmore optimization level for table svod: full Joining table svod and table svod using index tag Tin Как-то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 22:12 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
SET COLLATE TO "MACHINE" и пересоздай индекс, !удалить и создать заново. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2018, 10:55 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
bmvmonSET COLLATE TO "MACHINE" и пересоздай индекс, !удалить и создать заново.Да-да, обязательно. Именно по PIN, ибо он символьный. Особенности последних SP и фиксов VFP9. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2018, 11:35 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
COLLATE неизменно = "MACHINE" :( ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2018, 21:50 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
RedrikCOLLATE неизменно = "MACHINE" :(Тут дело в не/идентичности collate при создании индекса и при использовании. При разных индексы по символьным полям не работают. Именно поэтому временный индекс таки работает, а постоянный - нет. Чтобы работал индекс таки надо СОЗДАТЬ при том значении collate, при котором ожидается его использование. И еще раз - речь об индексах по СИМВОЛЬНЫМ полям. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2018, 22:11 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
ИМХО тут проблема в неправильном использовании индекса, т.е. план выполнения запроса неправильно выбран. Этот join подозрительный: RedrikМрак! Rushmore optimization level for table svod: none Using index tag Pin to rushmore optimize table svod Rushmore optimization level for table svod: full Joining table svod and table svod using index tag Tin ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 07:09 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
Redrik Код: sql 1.
svod - это 5,3 млн. записей общим объемом 930 МБ есть индексы, в т.ч. по TIN и PIN Дождаться результата невозможно! А если выбросить индексный файл - 0,5 сек Почему? Какой механизм? Просто интересно... Спасибо за участие! Факт использования индекса вообще и оптимизация в частности может, конечно, замедлить выполнение. Но не с такой катастрофической разницей. Скорее всего, здесь причина во вне программных проблемах. Что это может быть 1. Повреждены индексы - их надо пересоздать. Reindex не поможет. Именно удалить и создать заново. Возможно, есть какие-то повреждения и в таблицах. В этом случае надо CREATE TABLE + APPEND FROM 2. Когда Вы "выбрасываете индексы", то начинают использоваться какие-то другие индексы. Посмотрите, что вернет SYS(3054) если "выбросить индекс" 3. Вы тестируете запрос с индексом и без при разных условиях. 3.1. С разными значениям pin='123456789'. Без индекса значение такое, что выборка маленькая, а с индексом - чуть ли не вся таблица 3.2. Возможно, таблица лежит в сети и с индексом тянете данные из сетки, а без индекса - с локали 4. Физически мало места на диске. Некуда сохранять временные структуры в процессе выполнения запроса 5. Антивирус блокирует (проверяет) создаваемые временные файлы. Для целей тестирования можно попробовать просто отключить антивирус на время выполнения выборки Другими словами, оказывают влияние какие-то "внешние" (по отношению к среде FoxPro) причины. Сам по себе FoxPro не может дать такую разницу во времени выполнения ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 17:58 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
ВладимирМСам по себе FoxPro не может дать такую разницу во времени выполнения Может. FoxPro не боги писали. Сам натыкался на подобное на таблице в 10+ млн.записей. При построении плана выполнения запроса оптимизатором выбирается не тот индекс и цена ошибки получается слишком высока из-за большого размера таблицы. PS С MSSQL такое тоже бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 19:22 |
|
Скорость SELECT с индексом и без
|
|||
---|---|---|---|
#18+
ВладимирМЧто это может быть Спасибо, Владимир, что обратили внимание на мой вопрос! Сам SELECT в таком виде, наверное, слишком "неразумным" получился... Простое WHERE a.tin=b.tin вместо IN () работает практически мгновенно! По Вашим замечанием: - Таблица и индексы созданы с нуля - повреждений быть не может - Других индексов, кроме PIN и TIN, нету - Значение PIN в разных тестах одно и то же (выборка действительно получается большая - около 40% всей базы) - Таблица и индекс - локальные, машина физически отключена от сети (инфа не для сетки) - Места на диске около 120 ГБ (SSD) - Антивируса нет (машина не в сети, флешки как попало не суются, доступ ограничен) Надеюсь этот топик как минимум поможет кому-нибудь из читателей не попасть на грабли... Еще раз спасибо за участие в обсуждении! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 22:26 |
|
|
start [/forum/topic.php?fid=41&msg=39592447&tid=1581829]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 145ms |
0 / 0 |