mysql - 为什么在另一个数据库中执行相同的查询时不使用索引?
问题描述
我有两个数据库。一个是产品数据库(mysql)另一个是开发数据库(mysql)
当我使用解释键时,开发数据库使用索引,但产品数据库不起作用。
相同的查询相同的数据库(开发数据库是产品的副本)相同的索引.....
所以我检查了索引,“显示索引”...
但相同的索引。
我希望“p”表使用索引“idx_payment_tb”
解决方案
当优化器选择不使用索引时,通常是有充分理由的——即数据分布使得使用索引实际上会更慢。
请提供SHOW CREATE TABLE
和EXPLAIN SELECT
作为文本,而不是图像。优化器可能回避索引的原因有很多;我们可能会告诉你这次使用了哪个原因。
- 如果它是一个小表,为什么要麻烦索引。
- 如果正在使用的键在表中出现“很多”(这可能在您的开发和产品之间有所不同),则索引和数据之间的来回弹跳可能会更慢。
- 两台机器的统计数据可能不同。
推荐阅读
- java - 如何在MVC中连接到java(jsp,servlet)中的不同表?
- reactjs - ComponentDidMount 不工作
- c# - Crystal Reports 公式字段折线图
- command-line-interface - ssh 进入 gerrit sql 不能不使用向上箭头键来获取以前的命令
- python - 我使用 chardet 测试编码,但出现错误
- jenkins - 如果未包含在脚本中,Jenkins 库步骤将失败
- python - python正则表达式仅在括号中替换
- python - 在 Scikit-learn 的 GaussianProcessRegressor 中使用带有 RBF 内核的 scipy 优化算法时出现 TypeError
- reactjs - 无法设置 mobx 4 以使用 react native
- python - 神经网络预测足球结果