我有PostgreSQL的以下信息表:创建最佳的指标为我的数据库
rawData (fileID integer references otherTable, lineNum integer, data1 double, ...)
当我搜索这个表,我用下面的查询这样做:
SELECT lineNum, data1, ...other data FROM rawData WHERE
fileID = ? AND data1 < ? ORDER BY lineNum;
通常,此表中的数据是每个fileID的条目数,并且每个fileID具有从0到x的lineNum,lineNum从不为每个fileID重复(但它对不同的fileID重复)。那么data1实际上是一个可能重叠或不重叠的随机数。
为了加快阅读这些数据,我试图在它上面创建一个索引,但是很难找出索引它的最佳方法。目前我正在寻找以下两种索引方法之一,并且想知道哪种方法更适合我的搜索,或者如果有另一种选择,我没有想到会比其中的任何一种更好。
指数理念1:
CREATE INDEX searchIndex ON rawData (fileID, data1, lineNum);
指数理念2:
CREATE INDEX searchIndex ON rawData (fileID, lineNum, data1);
注意的是,此时,这和搜索不是由数据1约束是我在这个表上运行的唯一搜索,所以我并不太在意这个指数减缓其他搜索。
最后,我是否必须更改我的搜索查询以使用索引,或者当我搜索表时是否会自动使用该索引?