У меня есть таблица из 10M строк product
с полями, такими как color (int), price (float), weight (float), unitprice (int),
и т. Д. ... Теперь пользователи из Интернета динамически генерируют запросы для поиска данных из этой таблицы со случайными условиями (цвет должен быть здесь) и порядок такими как
select * from product where color=1 and price >5 and price <220 and .... order by unitprice limit 75, 25;
select count(*) from product where color=3 and weight <500 and price <30 ... ;
Как проиндексировать таблицу (InnoDB или NDB) примерно с 10 возможными полями фильтрации (с диапазоном, сортировкой ...), как это происходит в MySQL?
РЕДАКТИРОВАТЬ: В моем понимании MySQL, скорее всего, будет выбирать только один индекс для запроса, и будет работать только левая часть составного индекса. Очевидно, что индексирование всех возможных комбинаций не является возможным вариантом, например (color, price, weight, create_date, unitprice, ....)
, (color, weight, price, create_date, unitprice, ....)
, (color, unitprice, weight, ....)
.... Не все условия обязательно присутствуют во всех запросах.
Что бы вы сделали, чтобы проиндексировать эту таблицу?