如何针对性能优化以下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)
首先,因为我看到这个列将用于存储Id卡号,然后你可以制作类型为int
而不是varchar
或nvarchar
的coulmn,因为与varchar
或nvarchar
相比,搜索将在整数类型上更快。
第二,使用with (no lock)
,就像
select * from Employee with (nolock) where CNIC = 'some-CNIC-number'
这是为了最大限度地减少死锁的可能性。