Collection Contents 上一页 下一页 PDF

ASA SQL 用户指南

监控和提高性能

查询结果排序


许多查询都包含 ORDER BY 子句,该子句确保各行按可预知的顺序排列。索引可以快速地将信息排序。例如,下面的查询可以使用 customer 表的 lname 列上的索引按姓氏字母顺序访问 customer 表中的行:

SELECT *
FROM customer
ORDER BY customer.lname
包含 WHERE 和 ORDER BY 子句的查询 

当一个查询既包含 WHERE 子句又包含 ORDER BY 子句时,潜在的问题就会出现。

SELECT *
FROM customer
WHERE id > 300
ORDER BY company_name

Adaptive Server Anywhere 必须在两种策略之间做出选择:

  1. 按照公司名称的顺序检查整个客户表,查看每行的客户 ID 是否大于 300。

  2. 使用 id 列上的键只读取 id 大于 300 的公司。然后,需要按照公司名称对结果进行排序。

如果只有很少的 id 值大于 300,则第二种策略较好,因为只需要扫描很少的行并且可以迅速地将行排序。如果大多数 id 值都大于 300,则第一种策略要好得多,因为它不需要排序。

有关排序的详细信息,请参见ORDER BY 子句:对查询结果进行排序GROUP BY 子句:将查询结果划分为组


Collection Contents 上一页 下一页 PDF