使用ON的Sybase IQ 12.7子查询执行速度比join慢吗?



我在Sybase IQ 12.7中有一个查询,看起来像:

select ip from iplookup where ip in (select ip from persisted_info)

,其中ilookup定义为单列。

我看到了IN和子查询,并决定必须很慢(全表扫描),这将是首选:

select lk.ip from iplookup lk, persisted_info ps where lk.ip = ps.ip

但我想小心点,找一些证据来支持我。Sybase IQ不支持EXPLAIN PLAN,使用SET STATISTICS TIME ON返回语法错误。

要解决这个问题,我想知道如何得到:

  1. 计时信息
  2. 执行计划信息

编辑:我从Mac使用sqsh与Sybase交谈,当我在查询之前添加SET STATISTICS IO ON时,我在响应中获得额外的信息。

我认为你正在寻找(编辑语法,我在ASE模式)

set TEMPORARY OPTION NOEXEC = on;
set TEMPORARY OPTION QUERY_PLAN = on;
set TEMPORARY OPTION QUERY_TIMING = on;

这些写入服务器日志,我不确定你是否有访问权限。如果您可以不使用精确的IO和定时统计数据,那么您就不需要访问服务器日志,并且可以执行以下操作…

如果您使用的是@@版本12.7 ESD3或更高版本,您应该能够执行以下两个查询中的任何一个,并将输出放入.html或.xml文件中并查看它。

--XML
SELECT GRAPHICAL_PLAN ('select * from t1 where ip in (select ip from t2)')
--HTML
SELECT HTML_PLAN ('select * from t1 where ip in (select ip from t2)')

更多信息链接:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc74603.1270/html/iqrbwin/CIHEFAIF.htm

最新更新