0
我想優化以下查詢優化SQL查詢
Select Distinct(Column_A) from Table_name where Column_B = 'Something'
這基本上執行全表掃描(約7.5萬條記錄)。我想知道是否可以在此column_A上添加索引,以便它可以執行全索引掃描,或者是否有其他更好的解決方案?
我想優化以下查詢優化SQL查詢
Select Distinct(Column_A) from Table_name where Column_B = 'Something'
這基本上執行全表掃描(約7.5萬條記錄)。我想知道是否可以在此column_A上添加索引,以便它可以執行全索引掃描,或者是否有其他更好的解決方案?
您可以在Table_name(Column_B, Column_A)
上創建索引。索引「覆蓋」了查詢,因此只有索引應該被查詢。
編輯:
我一直在想這個問題。即使使用索引,一些SQL引擎也可能會對數據進行排序以解決distinct
。下面的查詢有可能會更快:
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
);
對於這項工作,就需要對table_name(column_A, column_B, id)
的索引。除索引外,此行假定每行都有唯一的id
。
但除了創建索引之外,還有其他方法嗎? – user1270123
你可以用'Column_B'按表分區。 –
或物化視圖。 –