【发布时间】:2012-01-31 21:45:55
【问题描述】:
问题的简短版本:
如果您有一个包含大量小行的表,并且您想通过可能包含两列的索引从该表中检索一条记录,这可能是低成本和快速或高成本的东西而且慢
加长版问题和背景:
我是一名在一家软件开发公司工作的顾问,我与他们就我想添加到他们正在构建(我正在设计)的应用程序中的一项功能的性能影响发生争执。
目前,每次有人检索客户记录时,我们都会写出一条日志记录。每次检索该记录时,我想将上次访问该记录的人的姓名和时间放在客户端页面上。
他们说这对性能的影响会很大,但根据我对 B 树如何工作的合理但非专业知识,即使表非常大,这似乎也不正确。
如果您在客户记录的 GUID 和访问日期/时间(降序)上创建索引,那么您应该能够通过索引扫描检索所需的记录,这将只需要找到第一个条目为那个 GUID 然后停止?而对于 b-tree 索引,大部分索引都将被缓存,因此所需的物理磁盘访问次数非常少,因此查询时间明显少于 1 秒。
或者我完全错了
【问题讨论】:
-
您有 GUID 作为键吗?那么您可能已经遇到了潜在的性能问题。
-
@AlbinSunnanbo:你的意思是 GUID 作为一个集群键,我想。
-
客户和同事总是对性能有奇怪的想法。
标签: sql-server performance indexing