У меня есть таблица в PostgreSQL со следующей информацией:Создание оптимального индекса для моей базы данных
rawData (fileID integer references otherTable, lineNum integer, data1 double, ...)
Когда я ищу эту таблицу, я делаю это с помощью следующего запроса:
SELECT lineNum, data1, ...other data FROM rawData WHERE
fileID = ? AND data1 < ? ORDER BY lineNum;
В общем, данные в этой таблице представляют собой количество записей для каждого идентификатора файла, и каждый файлID имеет строку lineNum от 0 до x, при этом строка LineNum никогда не повторяется для каждого файлаID (но она повторяется для разных файлов fileID). Тогда data1 является фактически случайным числом, которое может перекрывать или не перекрываться.
Чтобы ускорить чтение этих данных, я пытаюсь создать на нем индекс, но у меня возникли проблемы с поиском наилучшего способа его индексации. В настоящее время я рассматриваю один из следующих двух методов индекса и задаюсь вопросом, что было бы лучше для моего поиска, или если есть еще один вариант, который я не думал об этом, было бы лучше, чем любой из них.
индекс Идея 1:
CREATE INDEX searchIndex ON rawData (fileID, data1, lineNum);
индекс Идея 2:
CREATE INDEX searchIndex ON rawData (fileID, lineNum, data1);
Обратите внимание, что в это время, это и поиск не ограничивается data1 являются единственными поиски, которые я бегу на этом столе , поэтому я не слишком обеспокоен тем, что этот индекс замедляет другие поисковые запросы.
И, наконец, должен ли я изменить свой поисковый запрос, чтобы использовать индекс, или автоматически будет использовать этот индекс при поиске в таблице?