2014-05-13 35 views
1

我有一張擁有數百萬條記錄的表。我在同一張桌子上寫了一些新的查詢。在編寫其中一個查詢時,我意識到要提高性能,我需要在表的一列上創建一個索引。爲已存在很長時間的表創建索引

我的問題是,如果現在創建了新的索引,它會馬上改善我的表現嗎?我對索引的理解是,在數據插入過程中,索引有助於對數據進行排序。因此,如果表中已經有大量數據,那麼這些數據是否會被索引,只有新數據會被索引?

+0

您需要提供現有的表結構和要執行的查詢。僅通過添加索引不會提高性能,並且取決於您正在執行的查詢。 –

+0

Abhik,請參閱關於[堆棧溢出]的討論(http://stackoverflow.com/questions/23611459/sql-function-calls-ignored-with-having-clause/23611545?noredirect=1#23611545),就需要創建一個索引。討論中也提到了查詢。 –

+1

不,所有現有的行將在索引創建過程中編入索引。 –

回答

1

有一個機會,它會立即,但一旦統計更新,它會給你更好的表現(如果這是一個很好/適當的指數)。您可以手動運行它來更好地優化:

UPDATE STATISTICS <table>.<column> ESTIMATE SAMPLE 20 PERCENT 
+0

還提到使用「ANALYZE TABLE」來獲得引擎優化路徑。 –

相關問題