我在postgresql数据库中设置了一个表格,格式如下:
GeneTable
Id GeneSymbol GeneName
我在桌面上运行以下查询:
SELECT DISTINCT * FROM GeneTable WHERE GeneSymbol LIKE 'ACR' OR GeneName LIKE 'ACR';
我想优先搜索GeneSymbol列,因为在GeneSymbol列中找到ACR实体的可能性更高,理论上这有助于降低执行时间。有没有办法这样做?
提前致谢!
答案 0 :(得分:0)
查询优化器会处理这个问题。他将估计每个表达式的选择性并选择适当的连接。您只需创建索引来支持您的查询:
create index ix_genetable_genesymbol on genetable(genesymbol)
create index ix_genetable_genename on genetable(genename)
请注意,搜索所有属性(SELECT *
)通常被视为bad habit。如果您在问题中只提供了三个属性,并且id
是主键,那么以下查询的运行速度会快得多,因为上面的查询将覆盖它:
SELECT id FROM GeneTable WHERE GeneSymbol LIKE 'ACR' OR GeneName LIKE 'ACR';