如何優化以下SQL查詢的性能?如何優化以下SQL查詢的性能?
select * from Employee where CNIC = 'some-CNIC-number'
將使用別名幫助使它快一點?
我正在使用Microsoft SQL Server。
如何優化以下SQL查詢的性能?如何優化以下SQL查詢的性能?
select * from Employee where CNIC = 'some-CNIC-number'
將使用別名幫助使它快一點?
我正在使用Microsoft SQL Server。
這是更好,如果你告訴我們你所使用的RDBMS,但是...
1 - 不要做SELECT *
。指定您需要的列。更少的數據=更快的查詢
2 - 索引,請確保您的CNIC
有一個索引。你還需要在主鍵上有一個好的聚集索引(最好是一個ID號)
3 - 將數字放在單引號' '
中,表示您可以將其作爲varchar列。如果它始終是NUMERIC,它應該是一個int/bigint
數據類型。這佔用更少的空間,並且將更快地檢索和索引。
上CNIC
創建索引:
CREATE INDEX ix_employee_cnic ON employee (cnic)
的第一件事情,因爲我看到這列將被用於存儲的身份證號,那麼你可以讓你的int
類型,而不是varchar
或nvarchar
作爲搜索的coulmn會比varchar
或nvarchar
上一個整數類型更快。
其次,使用with (no lock)
,像
select * from Employee with (nolock) where CNIC = 'some-CNIC-number'
這是儘量減少死鎖的機會。
嗯,goood。 +1'數據較少=更快query' :) – 2010-11-11 14:35:29
擴大你的#1,如果OP可以刪除「*」的小列的列表(以及取決於數據庫,並不是所有支持這一點),你可以創建一個索引和INCLUDE列在查詢中使用。這被稱爲覆蓋索引,並且可以加速使用非聚集索引。 – 2010-11-11 14:38:53
@KM - 好建議。 – JNK 2010-11-11 14:55:56