我有一个流程,每天会在表格中插入大约100万条记录,而且它已经这样做了一年。然后我有一个连接到结果表的辅助表,并选择按三个月的部分的ID和状态分组的结果计数。一切都进展顺利但现在查询速度非常慢,我似乎无法弄清楚出了什么问题。有人能指出我需要从哪里开始以提升表现。
答案 0 :(得分:1)
我们可以将表视为磁盘上的大文件。要搜索文件中的某些信息,您需要对其进行扫描。这很贵。
为了提高流程的效率,RDBMS构建了索引 - 通常保存在内存中的数据结构,用于简化特定查询,每行包含在文件中查找行的引用。您拥有的行越多,索引就越大。
在某些时候,索引变得太大而无法容纳到内存中,而且部分内容会被交换到磁盘中。对流行索引的随机访问开始导致大量磁盘IO操作,因为操作系统不断地保存/加载部分索引,这比仅使用内存要慢得多。
做多少取决于数据,有几种方法,但它们背后的共同点是让流行的索引再次适应内存:
并确保使用索引,因为如果表正在快速增长,整个表的表扫描将很快减慢您的查询速度。