莫因-莫因,
我有一些表连接,我想给db2-database一个提示,我希望她使用哪个索引。我知道,这可能导致查询速度慢,但我有一个生产和测试数据库,我想在两个数据库中都有相同的行为(即使在一个数据库中,数据量明显不同或状态如何(索引 - )缓存有。
这可能(以及如何)?我没有在网上手册中找到任何内容,这可能意味着,我有搜索标准。
万分感谢。
答案 0 :(得分:1)
这不是DB2常用的东西。但是,您可以使用selectivity。在当前版本中它仍然应该be around。向查询添加选择性子句将影响查询优化器所做的决策。
Gilbert Le Blanc上面提到的内容也会起作用。您可以更新syscat.tables colums并欺骗DB2以优化对行中不存在的数据量的查询。此外,DB / DBM CFG的其余部分应该匹配(即计算的磁盘和CPU速度,内存使用相关设置等),因为在某些情况下它们可能在某种程度上也很重要。
答案 1 :(得分:0)
您可以通过个人资料影响优化程序:
但是,我没有听说过选择性条款,我认为在创建配置文件之前,您应首先尝试此选项。但是你应该在尝试其他选项之后这样做。在影响优化器之前,请按照DeveloperWorks教程中的步骤进行操作:
尝试不同的SQL优化类。默认优化类由数据库配置文件中的DFT_QUERYOPT参数控制。
尝试通过确保收集正确的数据库统计信息来解决任何性能问题。统计信息越详细,优化器就越能执行。 (请参阅DB2命令参考中的RUNSTATS)。
如果糟糕的访问计划是快速更改表的特征(即快速增长以使统计信息快速过期)的结果,请尝试使用ALTER TABLE命令将表标记为VOLATILE。
尝试在谓词中使用文字值而不是参数标记来解释查询。如果您在使用参数标记时获得不同的访问计划,它将帮助您更好地了解性能问题的性质。您可能会发现在应用程序中使用文字将以SQL编译开销为代价产生更好的计划(因此性能更好)。
尝试使用DB2的索引顾问程序(db2advis)来查看是否存在您可能忽略的任何有用索引。