2010-11-11 57 views

回答

4

這是更好,如果你告訴我們你所使用的RDBMS,但是...

1 - 不要做SELECT *。指定您需要的列。更少的數據=更快的查詢

2 - 索引,請確保您的CNIC有一個索引。你還需要在主鍵上有一個好的聚集索引(最好是一個ID號)

3 - 將數字放在單引號' '中,表示您可以將其作爲varchar列。如果它始終是NUMERIC,它應該是一個int/bigint數據類型。這佔用更少的空間,並且將更快地檢索和索引。

+0

嗯,goood。 +1'數據較少=更快query' :) – 2010-11-11 14:35:29

+1

擴大你的#1,如果OP可以刪除「*」的小列的列表(以及取決於數據庫,並不是所有支持這一點),你可以創建一個索引和INCLUDE列在查詢中使用。這被稱爲覆蓋索引,並且可以加速使用非聚集索引。 – 2010-11-11 14:38:53

+0

@KM - 好建議。 – JNK 2010-11-11 14:55:56

2

CNIC創建索引:

CREATE INDEX ix_employee_cnic ON employee (cnic) 
1

的第一件事情,因爲我看到這列將被用於存儲的身份證號,那麼你可以讓你的int類型,而不是varcharnvarchar作爲搜索的coulmn會比varcharnvarchar上一個整數類型更快。

其次,使用with (no lock),像

select * from Employee with (nolock) where CNIC = 'some-CNIC-number' 

這是儘量減少死鎖的機會。