如何针对性能优化以下SQL查询?
select * from Employee where CNIC = 'some-CNIC-number'
使用别名有助于提高它的速度吗?
我正在使用Microsoft SQL Server。
答案 0 :(得分:5)
如果你告诉我们你正在使用什么RDBMS,那就更好了,但是......
1 - 不要SELECT *
。指定所需的列。更少的数据=更快的查询
2 - 对于索引,请确保您在CNIC
上有索引。您还需要在主键上使用良好的聚簇索引(最好是ID号)
3 - 您将数字放在单引号' '
中,表示您可以将其作为varchar列。如果它始终为NUMERIC,则它应为int/bigint
数据类型。这占用的空间更少,检索和索引的速度更快。
答案 1 :(得分:2)
在CNIC
上创建索引:
CREATE INDEX ix_employee_cnic ON employee (cnic)
答案 2 :(得分:1)
首先,我看到此列将用于存储Id卡号,然后您可以使用int
而不是varchar
或nvarchar
类型的库,因为搜索会更快在整数类型上与varchar
或nvarchar
进行比较。
其次,使用with (no lock)
,如
select * from Employee with (nolock) where CNIC = 'some-CNIC-number'
这是为了尽量减少死锁的可能性。