在Postgresql中搜索数据时如何确定表的优先级?

时间:2017-10-23 08:16:19

标签: sql database postgresql database-optimization

我在postgresql数据库中设置了一个表格,格式如下:

GeneTable
Id  GeneSymbol GeneName

我在桌面上运行以下查询:

SELECT DISTINCT * FROM GeneTable WHERE GeneSymbol LIKE 'ACR' OR GeneName LIKE 'ACR';

我想优先搜索GeneSymbol列,因为在GeneSymbol列中找到ACR实体的可能性更高,理论上这有助于降低执行时间。有没有办法这样做?

提前致谢!

1 个答案:

答案 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';