索引四列?

时间:2011-07-12 21:14:50

标签: sql sql-server-express

根据原点和目的地的经度和纬度,我有一张桌子用于检索行车时间。虽然我使用Google的API来查找新的通勤时间,但我会在本地存储先前查询的结果,这样如果我需要再次查询同一个驱动器,我将不必使用Google。 (谷歌的网络服务受到限制。)无论如何,该表包括五列:

    LatStart (smallmoney)
    LongStart (smallmoney)
    LatEnd (smallmoney)
    LongEnd (smallmoney)
    DriveTime (Int.  In seconds)

(事实证明,Smallmoney对于经度和纬度非常有效,只要你在十进制之后只需要四位数,这对于它来说足够精确。)

我的问题是: 为了在SELECT查询中获得最佳效果,我应该为所有四个经度/纬度列编制索引吗?

还有第二个问题:我们可以假设它不会经常删除,但是从长远来看,随着表的增长,它仍然会在选择行时插入大约25%的行。 因此,所有四列的索引都会对插入查询产生不利影响吗?

2 个答案:

答案 0 :(得分:1)

如果您正在搜索所有4个,那么您可能想要将它们编入索引。

您应该考虑的另一个因素是您在索引上添加的填充。更高的填充减少了必须在索引上进行的重新分页的数量(它实际上并不称为重新分页,但这个词目前正在逃避我),这对写入有好处,并且读取成本也很高。较低的填充更适合读取。

我将所有4个索引,然后稍微使用填充来找到最佳设置。

答案 1 :(得分:1)

long / lat列上的索引将有助于以插入/更新/删除(写入)性能为代价来选择(读取)性能。

在添加索引之前和之后自己测量性能,以确定它是否合适。