2012-09-04 116 views
0

我有客戶端列表。有約。該表中有200萬條記錄。該表具有以下結構:數據庫表優化

ID(int),FLM,電子郵件,地址,電話,BDAy;除BDay以外的每種nvarchar類型。

我在ID和FLM列上有兩個非聚集索引。當我執行查詢時,如

SELECT * FROM tbl where FLM LIKE 'value' 

我遇到延遲約。 1分鐘。因此問題:

  • 在FLM上添加聚簇索引會改變性能嗎?
  • 我還能在這裏優化什麼?

我如何從程序中獲得結果?使用SqlConnection進行連接,然後在SQlCommand對象中指定查詢,然後通過DataReader獲取數據。也許在這裏我可以優化這個來獲得更好的結果(也許使用數據集)?

+1

價值形式是什麼?你使用通配符''%value%'?'嗎? 「展示計劃」展示了什麼?如果您在模式中使用初始%,我懷疑發生了表掃描。 – Ben

+0

是的,我使用通配符,這就是爲什麼在查詢like,not =語句。但即使我不使用通配符,我也必須等待很長時間。 – seeker

+0

作爲一個經驗法則,表應該有聚集索引。您應該在列上創建具有大多數唯一行並且是增量式的聚集索引。聚集索引也不應該很寬,以避免在字符串列上有聚簇索引。 – sqlhdv

回答

0

使ID成爲聚簇索引而不是非聚簇索引。只考慮您發佈的查詢,FLM列上的非聚集索引不會執行任何操作,因此您可以將其刪除。

希望聚集索引可以提高性能。