У меня есть база данных с пятью возможными столбцами индекса, все из которых полезны по-разному. Назовем их System, Source, Heat, Time и Row. Использование System и Row вместе создаст уникальный ключ, и если отсортировать по System-Row, база данных также будет сортироваться для любой комбинации из пяти индексных переменных (в том порядке, в котором я перечислял их выше).Структура индекса для максимальной скорости в любой комбинации столбцов индекса
Моя проблема заключается в том, что я использую все комбинации этих столбцов: иногда я хочу ПРИСОЕДИНИТЬ каждую Системную строку к следующей Системе (строка + 1), иногда я хочу GROUP или WHERE посредством System-Source-Heat, иногда я хочу посмотреть все записи System-Source WHERE Время находится в определенном окне и т. д.
В принципе, я хочу структуру индекса, которая функционирует аналогично каждой возможной перестановке этих пяти индексов (в правильном порядке, конечно), фактически не делая каждую перестановку (хотя я готов сделать это, если это необходимо). Я занимаюсь статистикой/аналитикой, а не традиционной работой с базами данных, поэтому размер индекса и скорость его создания/обновления не являются проблемой; Меня волнует только ускорение моих импровизированных запросов, поскольку я склонен их придумывать, запускать их, ждать 5-10 минут, а затем никогда не использовать их снова. Таким образом, моя главная задача - сократить «подождать 5-10 минут» на что-то большее, например «подождать 1-2 минуты».
Мои отсортированные данные будут выглядеть примерно так:
Sys So H Ti R
1 1 0 .1 1
1 1 1 .2 2
1 1 1 .3 3
1 1 2 .3 4
1 2 0 .5 5
1 2 0 .6 6
1 2 1 .8 7
1 2 2 .8 8
EDIT: Это может упростить вещи немного, что система практически всегда должна быть включена в качестве первого столбца, чтобы сделать какой-либо из других 4 столбцов сортировки заказ.
Не совсем такая же ситуация, но аналогичная, проверьте это тоже: ** [Я могу потерять преимущества индексации, если у меня есть индекс для каждого столбца?] (Http://dba.stackexchange.com/questions/ 27949/do-i-risk-loss-the-benefits-of-indexing-if-i-have-an-index-on-every-column) ** –
Вам нужно определить, можете ли вы пожертвовать производительностью при выполнении заявлений CUD в отношении времени выполнения запроса. Вы задумали создать представление? – Kermit