Sql 同一表中两列范围内的索引比较
在postgres或Mysql中是否可以创建一个索引来帮助在同一个表中的两列之间进行范围比较 例如,我有一个名为Sql 同一表中两列范围内的索引比较,sql,indexing,Sql,Indexing,在postgres或Mysql中是否可以创建一个索引来帮助在同一个表中的两列之间进行范围比较 例如,我有一个名为Test的表,有3列:id、col1和col2,它有2000万行。查询如下所示: SELECT id,col1,col2 from Test where col1 < col2; 我已经创建了它,但是查询计划器仍然进行顺序扫描 有没有办法增强该查询以减少执行时间 是的。用数学,路易斯 重新表述查询,使所有列都显示在过滤器的一侧(我基本上做了等效的转换-col2): 该索引只能在
Test
的表,有3列:id
、col1
和col2
,它有2000万行。查询如下所示:
SELECT id,col1,col2 from Test where col1 < col2;
我已经创建了它,但是查询计划器仍然进行顺序扫描
有没有办法增强该查询以减少执行时间 是的。用数学,路易斯
重新表述查询,使所有列都显示在过滤器的一侧(我基本上做了等效的转换-col2
):
该索引只能在PostgreSQL中使用,但不能在MySQL中使用。根据您的总体系统负载,另一种索引策略可能更好。此索引仅用于查询col1
或col2
参考资料:
CREATE INDEX idx_test on Test(col1,col2);
SELECT id,col1,col2 from Test where col1 - col2 < 0;
CREATE INDEX idx_test on Test (col1-col2);