powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Малоселективный индекс или верить IBExpert?
6 сообщений из 6, страница 1 из 1
Малоселективный индекс или верить IBExpert?
    #33578483
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имею: Yaffil 889 + Таблицу с 12.871 записью.
Одно поле, COD, имеет все 3 состояния.
кол-во записей по значениям поля COD:
Код: plaintext
select count(ID) from TABLE1 group by COD
2 - 2.726 записей;
3 - 8.726 записей;
4 - 1.419 записей.

Сделал 3 запроса типа:
Код: plaintext
select count(ID) from TABLE1 where COD=valueX
План - натурал, чего и следовало ожидать.
Execute time = 55ms - для COD=2;
Execute time = 56ms - для COD=3;
Execute time = 54ms - для COD=4;


Сделан индекс по полю COD. Статистика этого индекса =0,333333....
Что тоже ожидаемо.
Сделал 3 запроса типа:
Код: plaintext
select count(ID) from TABLE1 where COD=valueX

PLAN (TABLE1 INDEX (TABLE1_IDX4))
Execute time = 16ms - для COD=2;
Execute time = 40ms - для COD=3;
Execute time = 14ms - для COD=4;

Везьде (IBASE.RU, книжки) рекомендуют НЕ создавать низкоселективные индексы.
Возникает вопрос:
- Верить ли значениям вычисляемым IBExpert, для конкретного случая, или
придерживаться рекомендаций?
Уж больно вкусная разница получается по IBExpert...
...
Рейтинг: 0 / 0
Малоселективный индекс или верить IBExpert?
    #33578491
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя...
Вполне допускаю, что следует поискать другую комбинацию полей для создания индекса с большей селективностью.
(Похоже опять забрался в дебри. )
...
Рейтинг: 0 / 0
Малоселективный индекс или верить IBExpert?
    #33578528
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneИмею: Yaffil 889 + Таблицу с 12.871 записью.


МозгИ ты всё больше людЯм имеешь, а не Yaffil

Di_LIne
Одно поле, COD, имеет все 3 состояния.


А вот это надо запомнить. Что поля могут иметь состояния, причём не больше трёх

Di_LIne
кол-во записей по значениям поля COD:
Код: plaintext
select count(ID) from TABLE1 group by COD
2 - 2.726 записей;
3 - 8.726 записей;
4 - 1.419 записей.

Сделал 3 запроса типа:
Код: plaintext
select count(ID) from TABLE1 where COD=valueX
План - натурал, чего и следовало ожидать.
Execute time = 55ms - для COD=2;
Execute time = 56ms - для COD=3;
Execute time = 54ms - для COD=4;


Сделан индекс по полю COD. Статистика этого индекса =0,333333....
Что тоже ожидаемо.
Сделал 3 запроса типа:
Код: plaintext
select count(ID) from TABLE1 where COD=valueX

PLAN (TABLE1 INDEX (TABLE1_IDX4))
Execute time = 16ms - для COD=2;
Execute time = 40ms - для COD=3;
Execute time = 14ms - для COD=4;



Ну. И посмотри - на том значении, которого большинство, уже на таком мизерном объёме почти что в лоб, что по лбу. А нарасти объём на порядок в той же пропорции и всё поймёшь. Именно на том, которого будет большинство. А для тех, которых будут единицы процентов, индекс будет просто ракетой. Так что рекомендации - они для головы, чтоб пользоваться, а не для рук, чтоб следовать. И вообще, я про "плохие" индексы даже на этом форуме уже мозоль на языке набил, рассказываючи как их готовят и едят.
...
Рейтинг: 0 / 0
Малоселективный индекс или верить IBExpert?
    #33578590
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris Mirddin Di_LIneИмею: Yaffil 889 + Таблицу с 12.871 записью.

МозгИ ты всё больше людЯм имеешь, а не Yaffil

Ну... Что имею - на том и сижу...

Amris Mirddin Di_LIne
Одно поле, COD, имеет все 3 состояния.

А вот это надо запомнить. Что поля могут иметь состояния, причём не больше трёх - Нех, нах и пох?...

Amris MirddinНу. И посмотри - на том значении, которого большинство, уже на таком мизерном объёме почти что в лоб, что по лбу. А нарасти объём на порядок в той же пропорции и всё поймёшь. Именно на том, которого будет большинство. А для тех, которых будут единицы процентов, индекс будет просто ракетой. Так что рекомендации - они для головы, чтоб пользоваться, а не для рук, чтоб следовать. И вообще, я про "плохие" индексы даже на этом форуме уже мозоль на языке набил, рассказываючи как их готовят и едят.
- Так я об том же мозгУ и морщил!
Для меня самое важное COD=2! То есть, по этому значению = 90% выборок.
А по COD=3 - 2-3 % ... Тут могут и подождать. По логике работы с Базой.
И того на круг - получаем выигрыш.
Сенкс, Amris! Побежал менять штан... индексишки!

PS:
Amris Mirddin... уже на таком мизерном объёме почти что в лоб, что по лбу. А нарасти объём на порядок в той же пропорции и всё поймёшь...
- Чего-то страшно стало... Серьезно.
Если почти из 13 тысяч выборка идет 14 милисекунд, то из 130.000 будет
приблизительно 1,4 секунды.
Долго... Железка-то не сама худая... P-IV 3.0 G/ 1 mb + 512 RAM...
...
Рейтинг: 0 / 0
Малоселективный индекс или верить IBExpert?
    #33578715
Ziaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. 14 милисекунд * 10 = 140 милисекунд или 0.14 секунд.
2. тебе действительно требуется выборка всех записей с кодом 2 из 130 000?
передача данных займет больше времени.
...
Рейтинг: 0 / 0
Малоселективный индекс или верить IBExpert?
    #33578880
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ziaw1. 14 милисекунд * 10 = 140 милисекунд или 0.14 секунд.
2. тебе действительно требуется выборка всех записей с кодом 2 из 130 000?
передача данных займет больше времени.
Согласен. Математика верная.
1. 14 милисек * 10 = 0,14 * 6 перекрывающих друг друга запроса = 1,4 сек
2. Не-а! Столько даж мне мнОга. Но 100 записей - вынь и поклож.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Малоселективный индекс или верить IBExpert?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]