2008-10-13 52 views
2

我正在處理MySQL表格,這些表格基本上是在具有單一百葉窗的模擬辦公室房間中進行光線跟蹤模擬的結果。我通常需要檢索模擬結果,以獲得時間和盲人設置的獨特組合。所以我最終做了很多從MySQL中的大型表格優化單行查詢

SELECT result FROM results WHERE timestamp='2005-05-05 12:30:25' \ 
     AND opening=40 AND slatangle=60 

這看起來可疑可優化,因爲這個查詢永遠不會返回多個行。在三列上定義唯一標識每行的索引是否有意義?還是有其他技術可以使用?

回答

3

答案肯定是肯定的。如果你在時間戳上定義了一個唯一的索引,那麼打開和打開MySQL應該能夠通過很少的盤片查找找到你的行。

您可能會嘗試在時間戳,打開,標題和結果上創建索引。 MySQL可能能夠從索引中獲取數據,而不必接觸數據文件。

MySQL手冊有一個section about optimzing queries

2

我不會建議添加3個索引。使用所有三列的索引可能會更好,甚至在該組合上設置唯一的主鍵也是最好的 - 只有在確定它是唯一的時候。

3

我建議加入 LIMIT 1; 到查詢結尾。

William