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,每个num列基本上都在不同的页面上,每行都需要3个I / O操作.相反,对于better_layout,num列通常位于同一页面上. bad_layout查询可能需要大约3倍的时间才能执行. 良好的表布局可以大大改善查询性能.您应该尝试将通常选择在一起的列尽可能靠近表格布局中的彼此. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |