Collection Contents 上一页 下一页 PDF

UltraLite 数据库用户指南

动态 SQL

查询优化


任何查询,UltraLite 都可通过很多不同的方法来执行。执行查询的每个不同方法就称为计划。在 UltraLite 中,计划的定义主要根据表的访问顺序,以及每个表的搜索使用的是索引还是直接扫描行。对于某些查询,高效计划和低效计划的执行时间可能会有数量级的差异。

UltraLite 包含一个查询优化程序:UltraLite 运行时的一个内部组件,它检查备用计划并尝试选择高效计划。UltraLite 中的主要优化目的是选择索引,以便数据以高效的顺序访问。优化程序会尝试避免使用临时表来存储中间结果,并尝试确保在查询连接两个表时仅访问表的相关子集。

UltraLite 会自动优化查询。优化执行时间的主要途径是在数据库中创建索引,索引可优化查询,因而可供 UltraLite 利用。

检查查询计划 

作为开发过程的一种辅助手段,可以使用 UltraLite Interactive SQL 显示总结预准备语句的执行方式的计划。计划显示在实用工具底部窗格的一个选项卡上。您可以选择是以图形方式还是以文本格式显示计划。

例如,语句

SELECT I.inv_no, I.name, T.quantity, T.prod_no
FROM Invoice I, Transactions T
WHERE I.inv_no = T.inv_no

生成下面的计划:

join[scan(Invoice,0),index-scan(Transactions,1)]

此计划指出连接操作需执行以下操作:读取 Invoice 表(根据 index[0])中的所有行,然后使用 index[1] 从 Transaction 表中仅读取 inv_no 列匹配的行。

有关 UltraLite Interactive SQL 的详细信息,请参见 UltraLite Interactive SQL 实用程序

替换优化程序 

为了能够在小型设备上使用,UltraLite 中的查询优化并不象在 Adaptive Server Anywhere 中执行的优化那样广泛。您可以通过向查询添加 OPTION (FORCE ORDER) 子句替换选择的表顺序,该子句可以强制 UltraLite 以查询中的显示顺序对表进行访问。不建议将此选项用于通用目的。如果性能较低,通常较好的方法是创建适当的索引来加快执行速度。


Collection Contents 上一页 下一页 PDF