经过大量工作,我终于得到了一个相当复杂的查询,可以非常顺利地工作并很快返回结果。
它在开发和测试中运行良好,但现在测试速度大大放缓。在开发中花费 0.06 秒并且在测试中大致相同的解释查询现在在测试中是 7 秒。
解释略有不同,我不确定为什么会这样 来自开发的解释
-+---------+------------------+------+ ------------------------------ ---+ | 编号 | 选择类型 | 表| 类型 | 可能的键 | 钥匙 | key_len | 参考 | 行 | 额外的 | +----+-------------+------------+--------+-------- -----------------+------------ -+---------+------------------+------+ ------------------------------ ---+ | 1 | 初级 | | 全部 | 空 | 空值 | 空 | 空 | 5 | | | 1 | 初级 | 门票 | 参考 | 投标日期_idx | 出价日期_idx | 7 | 演出日期.出价,演出日期.日期 | 78 | | | 2 | 派生 | 节目 | 全部 | biddate_idx,latlong_idx | 空值 | 空 | 空 | 3089 | 使用临时的;使用文件 rt | | 2 | 派生 | 流派 | 参考 | bandid_idx | bandid_idx | 4 | activehw.shows.bid | 2 | 使用索引 | | 2 | 派生 | 艺术家 | eq_ref | 出价IDX | bid_idx | 4 | activehw.genres.bid | 1 | 使用哪里 | +----+-------------+------------+--------+-------- -----------------+------------
并且在测试中
| 编号 | 选择类型 | 表| 类型 | 可能的键 | 关键 | key_len | 参考 | 行 | 额外 | +----+-------------+------------+--------+-------- -----------------+--------------+---------+-------- ----------------------+--------+------------------ --------------------------------------------+ | 1 | 初级 | | 全部 | 空 | 空 | 空 | 空 | 5 | | | 1 | 初级 | 门票 | 参考 | 投标日期_idx | 投标日期_idx | 7 | 演出日期.出价,演出日期.日期 | 78 | | | 2 | 派生 | 流派 | 索引 | bandid_idx | bandid_idx | 139 | 空 | 531281 | 使用索引;使用临时的;使用文件排序 | | 2 | 派生 | 艺术家 | eq_ref | 出价IDX | 出价IDX | 4 | activeHW.genres.bid | 1 | | | 2 | 派生 | 节目 | eq_ref | biddate_idx,latlong_idx | 投标日期_idx | 7 | activeHW.artists.bid | 1 | 使用位置 | +----+-------------+------------+--------+-------- -----------------+--------------+---------+-------- ----------------------+--------+------------------ --------------------------------------------+ 5 行一组(6.99 秒)
即使查询完全相同,表的顺序也不同。这是导致减速的原因吗?如果是这样,我将如何解决它?开发是windows,测试是centOs。两者都运行相同版本的 mysql 5.0,就像我说的,测试运行完美,我没有对数据库进行任何结构更改。
我运行了 mysqlcheck,所有表都恢复正常。