有时候,SQL Anywhere 数据库服务器执行具有 ORDER BY 子句的查询有多种可能的方式。您可以使用索引使数据库服务器更有效地对表进行搜索。
可以以多种可能方式执行的查询的示例是同时具有 WHERE 子句和 ORDER BY 子句的查询。
SELECT * FROM Customers WHERE ID > 300 ORDER BY CompanyName; |
在这个示例中,SQL Anywhere 必须在两种策略之间进行选择:
按照公司名称的顺序检查整个 Customers 表,查看每行的客户 ID 是否大于 300。
使用 ID 列上的键只读取 ID 大于 300 的公司。然后,需要按照公司名称对结果进行排序。
如果只有很少的 ID 值大于 300,则第二种策略较好,这是因为只对很少的行进行扫描并迅速进行排序。如果大多数 ID 值都大于 300,则第一种策略较好,这是因为不需要进行排序。
创建一个有关 ID 和 CompanyName 的两列索引就可以解决上面示例中的问题。SQL Anywhere 可以使用此索引从表中以正确的顺序选择行。但是,请记住,索引占用数据库文件中的空间,保持索引为最新还需要一些系统开销。不要无限制地创建索引。请参见使用索引。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |