dot*_*00b 5 t-sql sql-server sql-server-2005
我有一个表,其中保存用户的 guid 及其实际名称作为字符串。我想根据用户获取一些信息。但我应该使用哪个字段?我的代码应该说:
select *
from userinboxcount
where countDate >= startDate and countDate <= endDate and userid = '<guid here>'
or
select *
from userinboxcount
where countDate >= startDate and countDate <= endDate and username = "FirstName LastName"
Run Code Online (Sandbox Code Playgroud)
最大的区别是一个字段是否有数据库可以使用的索引,而另一个字段则没有。如果数据库必须读取表中的所有数据来扫描值,则磁盘访问会占用大量资源,以至于数据类型的差异无关紧要。
如果两个字段都有索引,那么较小的索引会更快一些,因为它加载得更快,并且更有可能保留在缓存中。
理想情况下,您应该拥有条件中所有字段的索引,其中包含您想要作为包含字段返回的字段。这样查询就可以仅从索引生成结果,而根本不必从实际表中读取。您当然不应该使用select *,而是指定您实际需要返回的字段。
除此之外,比较 GUID 值会更快一些,因为它是简单的数字比较,不需要考虑词法规则。
| 归档时间: |
|
| 查看次数: |
6222 次 |
| 最近记录: |