优化SQL查询
我想优化以下查询优化SQL查询,sql,performance,query-optimization,Sql,Performance,Query Optimization,我想优化以下查询 Select Distinct(Column_A) from Table_name where Column_B = 'Something' 这基本上是一个完整的表扫描(大约750万条记录)。我想知道我是否可以在此列上添加索引,以便进行完整的索引扫描,或者是否有其他更好的解决方案?您可以在表名(列B,列A)上创建索引。索引“覆盖”了查询,因此只有索引才能访问查询 编辑: 我一直在想这个。即使使用索引,一些SQL引擎也可能对数据进行排序,以解析不同的。以下查询可能更快: sel
Select Distinct(Column_A) from Table_name where Column_B = 'Something'
这基本上是一个完整的表扫描(大约750万条记录)。我想知道我是否可以在此列上添加索引,以便进行完整的索引扫描,或者是否有其他更好的解决方案?您可以在
表名(列B,列A)
上创建索引。索引“覆盖”了查询,因此只有索引才能访问查询
编辑:
我一直在想这个。即使使用索引,一些SQL引擎也可能对数据进行排序,以解析不同的
。以下查询可能更快:
select column_A
from table_name t
where column_B = 'Something' and
t.id = (select min(id)
from table_name t2
where t2.column_A = t.column_A and t2.column_B = t.column_B
);
要使其正常工作,需要在
表名(列A、列B、id)
上建立索引。除索引外,这假定每行上都有一个唯一的id
。您可以在表名(列B,列a)上创建一个索引。
。索引“覆盖”了查询,因此只有索引才能访问查询
编辑:
我一直在想这个。即使使用索引,一些SQL引擎也可能对数据进行排序,以解析不同的
。以下查询可能更快:
select column_A
from table_name t
where column_B = 'Something' and
t.id = (select min(id)
from table_name t2
where t2.column_A = t.column_A and t2.column_B = t.column_B
);
要使其正常工作,需要在
表名(列A、列B、id)
上建立索引。这假设除了索引之外,每行上都有一个唯一的id
。但是除了创建索引之外,还有其他方法吗?您可以按列按表划分。\B
。或者按物化视图划分。还有一个问题,即列\a大约有730万个空值,所以我想在这里添加索引并没有多大帮助。@user1270123。如果大多数值都是NULL
,您可以通过执行来帮助SQL引擎优化查询,其中列_B='Something',列_A不为NULL
,以及列_B上的索引,列_A
(按该顺序)。但是还有其他方法吗,除了创建索引之外?您可以按列\B
或物化视图按表进行分区。还有一个问题是,列\A大约有730万个空值,所以我想添加索引在这里没有多大帮助。@user1270123。如果大多数值都是NULL
,您可以通过执行来帮助SQL引擎优化查询,其中列_B='Something'和列_A不为NULL
,以及列_B上的索引,列_A(按该顺序)。