代码之家  ›  专栏  ›  技术社区  ›  MadMurf

使用varchar字符串执行SQL ORDER BY子句

  •  1
  • MadMurf  · 技术社区  · 15 年前

    我想做一个 选择 用一个 按顺序 在一 VARCHAR(200) 字段。在阅读DB2V9.1forZos站点时,它说

    订购按照 与中描述的比较规则 语言元素。

    在字符串比较规则中说

    通过比较比较两个字符串 每个的对应字节 字符串。如果字符串没有 长度相同,进行比较 一份短期副本 被填充在 有空格,所以它有 与其他字符串的长度相同。

    我的问题是这是否意味着我 按顺序 子句将随着数据量的增加而变慢,因为在后台 长度() 函数调用,然后对每个字符串进行填充,以便按顺序返回结果?

    2 回复  |  直到 15 年前
        1
  •  7
  •   Roee Adler    15 年前

    应该在varchar字段上使用索引。索引是一种精确优化此过程的结构。

    您所指的比较是在没有索引的情况下进行的。但是,如果有一个索引,则会有一个结构不断地按该字段维护表的顺序,因此ORDERBY不会产生显著的额外开销。

        2
  •  1
  •   Fred Sobotka    15 年前

    ORDER BY通常作为查询的一部分进行排序操作。如果要排序的行数足够小,足以容纳指定的内存缓冲区,则开销最小。对于内存中的行太多而无法执行排序的较大结果集,排序将需要额外的磁盘I/O将数据转储到临时存储并重新读取。首选排序键上的一个聚类索引可以大大减少排序的频率和开销,但每个表只能选择一个聚类索引。