我希望在 VARCHAR(200)字段上使用 ORDER BY 进行 SELECT 。阅读DB2 v9.1 for zOS站点就可以了
按照规定执行订购 与中描述的比较规则 语言元素。
在字符串比较的规则中说
通过比较比较两个字符串 每个的相应字节 串。如果字符串没有 相同的长度,进行比较 用短的临时副本 已经填充的字符串 正确的空白,所以它有 与其他字符串相同的长度。
我的问题是,这是否意味着我的 ORDER BY 子句会随着数据量的增加而变慢,因为在后台有一个 LENGTH()函数调用然后填充正在对每个字符串执行以便按顺序返回结果?
答案 0 :(得分:7)
您应该在VARCHAR字段上使用索引。索引是一种精确优化此过程的结构。
您指的那些比较确实在没有索引时发生。但是,如果存在索引,那么通常会有一个结构来维护该字段的表顺序,因此ORDER BY不会产生大量的额外开销。
答案 1 :(得分:1)
Order By通常会将排序操作作为查询的一部分。如果要排序的行数足够小以适合指定的内存缓冲区,则开销很小。对于较大的结果集,其中有太多行要在内存中执行排序,排序将需要额外的磁盘I / O将数据转储到临时存储并将其重新读入。您首选排序键上的群集索引可以大大降低排序的频率和费用,但每个表只能选择一个聚类索引。