cost值越大越优先吗?
理论上是 cost值越大,SQL的执行计划就不好. 但是还有一个前提,就是你的表的分析数据要正确。 cost 值的计算,是根据数据库表的统计信息来计算的。 例如 你有一个 一百万行的表 ABC。 在 A 列上面有一个索引。 你 SELECT SUM(B) FROM ABC WHERE A = 100 在数据库没有表/索引的 相关统计信息的情况下, 这个 cost 确实是估计出来的一个大概的值。偏差可能 与这个表中的 A=100 的数量有多少相关。 比如 100万条记录里面, A=100 的数据只有一条 / A=100 的数据只有 十万条。 执行的时间可是差很多的。 但是如果表/索引 没有被分析过, 数据库对于 SELECT SUM(B) FROM ABC WHERE A = 100 还是 SELECT SUM(B) FROM ABC WHERE A = 1000 查询的计划,是一样的。 但是如果你的 表/索引, 是已经分析过了的, 那么 cost 所反映出来的值, 可能更精确一些。 因为在分析的时候,就能知道 A=100 的数据只有一条 还是有 十万条。 数据库可以根据需要,选择最佳的查询方案来进行处理。 假如 那一百万条数据中, A=100 的数据只有一条 ,而 A=1000的数据,有 八十万条。 那么很可能 SELECT SUM(B) FROM ABC WHERE A = 100 使用索引的查询计划 而 SELECT SUM(B) FROM ABC WHERE A = 1000 使用全表扫描的查询计划。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有