Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
要提高性能,应避免在使用导致表扫描的查询操作时选择内容列。尽可能使用文件名来检索目录访问代理表的内容。使用文件名作为谓语可提高性能,因为目录访问服务器只读取指定的文件。如果文件名未知,则首先运行查询来检索文件列表,然后对列表中的每个文件发出查询以检索其内容。
以下查询的运行速度可能比较慢(取决于目录中文件的数量和大小),因为目录访问服务器必须读取目录中所有文件的内容才能找到与谓语匹配的文件名:
SELECT contents FROM DirAccessProxyTable WHERE filename LIKE 'something%';
以下查询不会引起目录扫描,而返回单个文件的内容:
SELECT contents FROM DirAccessProxyTable WHERE filename = 'something';
以下查询的运行速度可能比较慢(取决于目录中文件的数量和大小),因为存在不相连关系 (OR),所以目录访问服务器必须执行表扫描操作:
SELECT contents FROM DirAccessProxyTable WHERE filename = 'something' OR SIZE = 10;
除了可以将文件名以文字常量形式放在查询中以外,也可以将文件名的值放到一个变量中,然后在查询中使用该变量:
DECLARE @filename LONG VARCHAR; SET @filename = 'something'; SELECT contents FROM DirAccessProxyTable WHERE filename = @filename;
分隔符一致性