大字段为什么会影响性能

时间:2021-10-23 19:36:27
看到一篇文章,因为大字段,在执行select count时很耗时,分离后性能提升很大。难道count不是直接去从索引里查的吗?还要到数据库表里去计数?

6 个解决方案

#1


如果你select出来的列中没有含有index中包含的列的话,会进行全表扫描,速度就会很慢。

难道你的表格没有PK列?如果有PK列,会对PK列自动生成index,select *的时候包含PK列,应该不会慢,除非数据量很大。

#2


字段大PAGE就多,扫描时间就会长。

#3


每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。

#4


引用 3 楼 DBA_Huangzj 的回复:
每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。

我的理解是索引页不是和记录条数有关吗,跟每条记录的大小没关系吧?

#5


引用 4 楼 burningbloodgg 的回复:
引用 3 楼 DBA_Huangzj 的回复:每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。
我的理解是索引页不是和记录条数有关吗,跟每条记录的……
首先要看你的索引是什么类型,聚集索引存放的其实是整个数据表,字段宽了,索引自然就大了。的确和行数有关系,我现在是假定同样的行数下,字段越宽,每页存放的数据就越少,需要的索引页就越多

#6


引用 5 楼 DBA_Huangzj 的回复:
引用 4 楼 burningbloodgg 的回复:引用 3 楼 DBA_Huangzj 的回复:每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。
……

非常感谢。

#1


如果你select出来的列中没有含有index中包含的列的话,会进行全表扫描,速度就会很慢。

难道你的表格没有PK列?如果有PK列,会对PK列自动生成index,select *的时候包含PK列,应该不会慢,除非数据量很大。

#2


字段大PAGE就多,扫描时间就会长。

#3


每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。

#4


引用 3 楼 DBA_Huangzj 的回复:
每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。

我的理解是索引页不是和记录条数有关吗,跟每条记录的大小没关系吧?

#5


引用 4 楼 burningbloodgg 的回复:
引用 3 楼 DBA_Huangzj 的回复:每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。
我的理解是索引页不是和记录条数有关吗,跟每条记录的……
首先要看你的索引是什么类型,聚集索引存放的其实是整个数据表,字段宽了,索引自然就大了。的确和行数有关系,我现在是假定同样的行数下,字段越宽,每页存放的数据就越少,需要的索引页就越多

#6


引用 5 楼 DBA_Huangzj 的回复:
引用 4 楼 burningbloodgg 的回复:引用 3 楼 DBA_Huangzj 的回复:每个索引页固定大小为8K,字段大,那么就要更多的索引页来存放,而影响索引速度的其中一个最重要的因素是B树的层级,索引页越多,层次越多,需要查找、扫描的范围就广。自然影响性能。这个解释仅仅针对你的count问题,字段大还有其他一系列的问题,如维护成本的增加、碎片增加的速度等。
……

非常感谢。