database - Oracle SQL 不同环境下相同查询的不同计划
问题描述
两个非常相似的环境,相同的数据库结构,一个查询,两个执行计划:一个带有嵌套循环和索引(快),另一个带有哈希连接和完全访问(慢)。
我应该执行哪些步骤来查找计划差异的原因?
解决方案
- 确保两个环境上的数据库版本相同:
SELECT * FROM V$VERSION;
然后检查您的表在两种环境中的统计信息:
SELECT TABLE_NAME, NUM_ROWS, AVG_ROW_LEN, SAMPLE_SIZE, LAST_ANALYZED FROM DBA_TABLES WHERE TABLE_NAME = 'YOUR_TABLE_NAME';
如果统计数据不同,则在两个环境上运行以下脚本:
BEGIN
EXEC dbms_stats.gather_table_stats('YOUR_SCHEMA','YOUR_TABLE',cascade=>TRUE);
END;
推荐阅读
- c# - 在某些条件下使用 SQL Server 表加载 datagrid itemsSource
- c# - 使用表达式和反射创建 WPF 绑定
- c# - 我应该在数据库中处理 excel 还是使用 aspose.cells 处理它?
- bash - 期望脚本不提示 sftp
- android - MotionLayout 扩展回收器列表视图 - 如何重置过渡
- c# - 如何将 web 表单与在 asp.net 中的另一台计算机上运行的 sql server 连接
- scrapy - 如何从html中提取项目数组
- c - C TOR 套接字未发送请求
- azure - 在一个逻辑应用程序中根据一天中的时间将消息发送到属性略有不同的服务总线?
- c# - C# 使用 Process 类从自定义命令中捕获命令行输出