нужно сделать составной индекс по двум столбцам, order_type, user_id
но не могу понять, какой порядок лучше? При условии, что в стобце user_type всего 3 различных значения (0,1,2, при этом 90% из них =2)
Уникальный только столбец order_id
Порядок столбцов в индексе зависит от предикатов в запросах
WHERE user_id in (@P0) AND order_type = (@P1)
Для большей производительности в качестве первого поля индекса рекомендуется использовать уникальное поле таблицы.
Тогда order_type, user_id. Возможно еще include order_id
а какие поля в запросе выбираются? и какие user_type чаще всего запрашивают (возможно фильтрованный индекс под эти запросы будет предпочтительнее? хотя 3 млн строк мало, есть просадки по производительности?
Стоп. Не дочитал вопрос) Чем больше уникальность, тем левее должен быть столбец. Т.е. order_type, user_id
выбираются все 3 поля, запрашивают user type = 2 (он встречается в 90%)
так user_id более уникальный чем order_type (всего 3 значения)
поробуйте тогда order_type include order_id where user_type = 2 либо под все ouser_type, order_type include order_id ну на таких объемах это все не очень критично если query store настроен, через неделю посмотрите какие индексы используется и что более эффективно работает под вашим профилем нагрузки
а если учитывать, что order_type равен 2 для 90%+ записей? или все же логика в том, чтобы сначала выбрать одно значение по составному индексу для order_type = (@P1), а далее для фиксированного order_type пробежаться по всем user_id (условие user_id in (@P0)) ?
имеется ввиду менее уникальный наверное
Так... Есть таблица c заказами пользователей(order_type, user_id, order_id)... При условии, что в стобце user_type всего 3 различных значения. Откуда взялся user_type если его нет в таблице?
опечатка, исправил, там order_type
Все немного сложнее. Например, если в in значений много, то и составной индекс может не потребоваться в виду его бесполезности. Сделайте два индекса с разным порядком и сравните производительность типичных запросов
создай оба и накопи статистику испоьзования хотя бы за месяц
Обсуждают сегодня