2017-01-28 33 views
0

我有一個超過200萬行的MySQL數據庫表,我試圖從我的Time_Stamp列查詢特定時間的記錄。如何在MySQL的Time_Stamp列創建索引?

正如預期的那樣,查詢需要很長時間才能執行。

我已經讀過,優化這種類型的查詢的最佳方法是索引time_stamp,但我一直未能找到如何做到這一點的方法。

我的主要問題如下:

  • 如何在我的TIME_STAMP列上創建索引優化我的查詢?
  • 我是連接到這個數據庫的幾個用戶之一,所以創建索引會以任何方式影響其他用戶和他們的查詢?
+0

就像任何其他列類型。 –

回答

2

您可以添加一個索引與創建索引

CREATE INDEX index_name ON table_name (column_name) 

對於第二個問題。添加一個索引可以改變查詢優化做這樣的事實,即索引進行評估,以找到數據庫引擎的最佳掃描策略爲此,您可以看看這篇文章在mysql文檔中的外觀https://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html

+0

感謝您的評論。我每秒都在向我的表格寫入數據。指數的效果是否顯着? – Gary

+1

@Gary在上面的語句中添加'ALGORITHM = INPLACE'和'LOCK = NONE',以確保在編譯索引時允許併發寫入和讀取操作繼續。在5.6之前,這些不可用,並且在建立索引時該表將被鎖定。讀寫操作將停止並等待。 –

+0

@ Michael-sqlbot因此,當我從另一臺客戶端計算機進行查詢時,我的LabView(它提供MySQL)凍結時出現問題。我還沒有在我的陳述中加入'ALGORITHM = INPLACE'和'LOCK = NONE'。你認爲這會解決凍結問題嗎?另外,這兩個命令是否在上面的語句末尾? – Gary