sql – 基于列的顺序查询速度

前端之家收集整理的这篇文章主要介绍了sql – 基于列的顺序查询速度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
数据库中列类型的顺序对查询时间有任何影响吗?

例如,具有混合排序(INT,TEXT,VARCHAR,INT,TEXT)的表与具有连续类型(INT,TEXT)的表相比,查询速度较慢

解决方法

答案是肯定的,它是重要的,它可以很重要,但通常不会太多.

所有I / O都是在页面级别(通常为2K或4K,取决于您的操作系统)完成.行的列数据彼此相邻存储,除非页面变满,在这种情况下,数据将写入另一个(通常是下一个)页面.

列之间的列(基于表定义)所选列所需的磁盘数据空间越大,所选列的数据(有时)(有时)在不同页面上的机会就越大.在不同的页面上可能会导致额外的I / O操作(如果在其他页面上没有选择其他行).在最坏的情况下,您选择的每个列可能位于不同的页面上.

这里有一个例子:

create table bad_layout (
num1 int,large1 varchar(4000),num2 int,large2 varchar(4000),num3 int,large3 varchar(4000)
);

create table better_layout (
num1 int,large3 varchar(4000)
);

比较:
从bad_layout中选择num1,num2,num3;
从better_layout中选择num1,num3;

因为对于bad_layout,每个num列基本上都在不同的页面上,每行都需要3个I / O操作.相反,对于better_layout,num列通常位于同一页面上.

bad_layout查询可能需要大约3倍的时间才能执行.

良好的表布局可以大大改善查询性能.您应该尝试将通常选择在一起的列尽可能靠近表格布局中的彼此.

猜你在找的MsSQL相关文章