Sql DB2 IN列表访问、索引扫描、TS扫描

Sql DB2 IN列表访问、索引扫描、TS扫描,sql,db2,Sql,Db2,我正在学习IBMDB2,我有一个关于访问类型的问题 我真的不确定如何在查询中决定列表访问、索引扫描、TS扫描 例如,我们有 SELECT * FROM T WHERE C1=1 AND C2 IN (1,2,3) AND C3>0 AND C4<100; 从T中选择* 式中C1=1和C2 IN(1,2,3) C3>0和C4告诉您获得何种访问路径的唯一方法是从EXPLAIN PLAN获取输出。您不能查看查询(不了解可用索引、列基数等)并确定优化器将做什么 DB2的优化器是基

我正在学习IBMDB2,我有一个关于访问类型的问题

我真的不确定如何在查询中决定列表访问、索引扫描、TS扫描

例如,我们有

SELECT * FROM T
 WHERE C1=1 AND C2 IN (1,2,3)
    AND C3>0 AND C4<100;
从T中选择*
式中C1=1和C2 IN(1,2,3)

C3>0和C4告诉您获得何种访问路径的唯一方法是从
EXPLAIN PLAN
获取输出。您不能查看查询(不了解可用索引、列基数等)并确定优化器将做什么


DB2的优化器是基于成本的,将选择它计算出的CPU、磁盘访问和内存方面效率最高的访问计划。使用
EXPLAIN PLAN
或可视化解释工具可以查看优化器选择的内容。

我想补充一点,DB2查询优化器使用的成本信息的来源不是实际的表和索引本身,而是RUNSTATS实用程序生成的统计摘要。这意味着在再次运行RUNSTATS之前,查询优化器可能不会注意到对表的重大更改(例如大型删除或插入)。在某些DB2平台上,数据库引擎可以监视这些类型的更改,并自动执行RUNSTATS以生成表及其索引的新统计快照。