根据原点和目的地的经度和纬度,我有一张桌子用于检索行车时间。虽然我使用Google的API来查找新的通勤时间,但我会在本地存储先前查询的结果,这样如果我需要再次查询同一个驱动器,我将不必使用Google。 (谷歌的网络服务受到限制。)无论如何,该表包括五列:
LatStart (smallmoney)
LongStart (smallmoney)
LatEnd (smallmoney)
LongEnd (smallmoney)
DriveTime (Int. In seconds)
(事实证明,Smallmoney对于经度和纬度非常有效,只要你在十进制之后只需要四位数,这对于它来说足够精确。)
我的问题是: 为了在SELECT查询中获得最佳效果,我应该为所有四个经度/纬度列编制索引吗?
还有第二个问题:我们可以假设它不会经常删除,但是从长远来看,随着表的增长,它仍然会在选择行时插入大约25%的行。 因此,所有四列的索引都会对插入查询产生不利影响吗?
答案 0 :(得分:1)
如果您正在搜索所有4个,那么您可能想要将它们编入索引。
您应该考虑的另一个因素是您在索引上添加的填充。更高的填充减少了必须在索引上进行的重新分页的数量(它实际上并不称为重新分页,但这个词目前正在逃避我),这对写入有好处,并且读取成本也很高。较低的填充更适合读取。
我将所有4个索引,然后稍微使用填充来找到最佳设置。
答案 1 :(得分:1)
long / lat列上的索引将有助于以插入/更新/删除(写入)性能为代价来选择(读取)性能。
在添加索引之前和之后自己测量性能,以确定它是否合适。