【发布时间】:2010-11-11 14:27:22
【问题描述】:
如何优化以下 SQL 查询的性能?
select * from Employee where CNIC = 'some-CNIC-number'
使用别名是否有助于加快速度?
我正在使用 Microsoft SQL Server。
【问题讨论】:
标签: performance optimization sql
如何优化以下 SQL 查询的性能?
select * from Employee where CNIC = 'some-CNIC-number'
使用别名是否有助于加快速度?
我正在使用 Microsoft SQL Server。
【问题讨论】:
标签: performance optimization sql
如果您告诉我们您使用的是什么 RDBMS 会更好,但是...
1 - 不要做SELECT *。指定您需要的列。更少的数据 = 更快的查询
2 - 对于索引,请确保您在 CNIC 上有一个索引。您还希望在主键上有一个良好的聚集索引(最好是 ID 号之类的东西)
3 - 您将数字放在单引号 ' ' 中,这表明您可能将其作为 varchar 列。如果它始终是 NUMERIC,它应该是 int/bigint 数据类型。这占用的空间更少,检索和索引的速度更快。
【讨论】:
Less data = faster query :)
在CNIC上创建索引:
CREATE INDEX ix_employee_cnic ON employee (cnic)
【讨论】:
首先,我看到此列将用于存储身份证号码,然后您可以将您的库设为int 而不是varchar 或nvarchar,因为与整数类型相比,搜索会更快到varchar 或nvarchar。
其次,使用with (no lock),点赞
select * from Employee with (nolock) where CNIC = 'some-CNIC-number'
这是为了尽量减少死锁的机会。
【讨论】: