我需要索引表吗?

时间:2015-09-17 10:04:25

标签: sql indexing sql-server-2008-r2

我使用的是SQL Server 2008 R2。我是否需要索引已有主键的表格?

主键,表自动索引。

1 个答案:

答案 0 :(得分:1)

想象一下该国所有公民的电话指南。假设主键是国家身份证号码(美国和英国可能更愿意考虑社会安全号码)。

这种表格可以快速检查已知公民的电话。该表按ID号排序,因此我将指南打开一半。我知道这个号码是在上半场还是另一半。我一直这样做,直到找到手机。因此搜索操作成本是对数的。

现在想象一下,警方想调查一个未知的电话电话号码。该表按人员ID排序,而不是按电话号码排序。他们需要看看整个指南!即使在今天,从硬盘读取的计算机也很慢。一张大桌子可以有MBytes甚至GBytes。如果警察非常迅速地做到这一点,聪明的方法是将所有的发音号码放在另一个列表中,按数字排序。当然,这需要使用每个新记录更新索引表并需要一些硬盘。

表越大,logaritmic和linear之间的差异越大。因此,如果你有一个1000记录表,那么索引它是很好的。但是,索引严重的1.000.000记录表可能会破坏您的性能。您读的越多,您想要索引的越多。插入,删除或更新索引字段越多,您希望索引它的次数就越少。

更新:可能需要编制索引的列是:

中使用的列
  1. WHERE
  2. 的JOIN
  3. GROUP BY
  4. 决定索引哪些列可能会变得很复杂。订单可能很重要。空虚和功能可以让你的生活变得更加困难。当你只从一个搜索时,数据库有时会尝试像使用和索引两个列那样的黑客。某些字段可能只有非常少的信息(它们很少selective)。这可能包括性别栏(男/女),只会将信息减少一半。