我有一个高级别的问题。假设我有一个需要30毫秒才能完成的SQL查询,它会在具有100万条记录的表上的索引列上运行。现在,如果表大小增加到500万条记录,我应该期望查询需要5倍的时间(因为必须搜索索引的5倍),所以150毫秒。我道歉,如果这太简单了,我有一个程序运行10 SQL(索引)对一个表将增加这个因素,查询目前需要300毫秒,我担心这将增加到1.5秒。任何帮助将不胜感激!
答案 0 :(得分:1)
您可以将索引查找视为通过二叉树搜索,然后使用适当的数据获取页面。通常,索引适合内存,通过索引搜索会非常快。将数据大小乘以10会使树的深度增加3或4.对于内存中的比较操作,这对于大多数查询来说是不明显的。 (除了二进制b树之外还有其他类型的索引,但这是考虑性能的一种方便的模型。)
然后,数据提取可能会导致从磁盘读取页面的开销。那应该还是很快的。
所以,你问题的简单答案是:不。但是,这假设查询类似于:
select t.*
from table t
where t.indexcol = CONSTANTVALUE
并且,它假定查询只返回一行。随着表格大小的增加,可能影响性能的因素包括:
join
或group by
。