какие мысли
SELECT ... WHERE x=1 AND y=1 AND z=1 AND a=1 AND b=1 AND c=1;
Всего в таблице 1 млн строк.
x = 1 - 100 000 строк
x = 1 AND y = 1 - 10 000 строк
x = 1 AND y = 1 AND z = 1 - 1000 строк
x = 1 AND y = 1 AND z = 1 AND a=1 - 100 строк
x = 1 AND y = 1 AND z = 1 AND a=1 AND b=1 - 10 строк
x = 1 AND y = 1 AND z = 1 AND a=1 AND b=1 AND c=1 - 1 строка
Естественно нужно составной индекс
x,y,z,a,b,c
Вопрос, на каком моменте лучше остановиться?
Может хватит x,y,z,a и на 100 строках уже и так понятно будет
План посмотреть условиями задачи запрещено?
А плана нет. Есть заказчик, который говорит что у него будет на сайте. оцениваем количество строк и принимаем решение. Если обслуживание БД, то да планы, аналитика и так далее.
т.е. вы разрабатываете Модель Данных в данном случае? в частности, вы на данный момент знаете, какие будут запросы к этой таблице?
Да. Много select, мало Update. Но update будут. То есть очень длинный индекс не хотелось бы ставить
А можно чуть больше конкретики?.. Просто возможно вам подойдет колоночная база данных, если колонок много.
А у вас точно такое распределение данных? Просто по постановке задачи каждое поле уменьшает выборку ровно в 10 раз. И второй вопрос - какое количество полей в select возвращается? А то есть подозрение, что вы пытаетесь результат функции из таблицы прочитать..
Примерно. Я просто хочу понять при каком порядке уже можно отказаться от индексов
Я к чему вопрос задал - возможно у вас в данных функциональная зависимость от 6 полей фильтра и вместо индекса по 6 полям удобнее сделать индекс по результирующей функции (одно поле)
Обсуждают сегодня