经过大量的工作,我终于得到了一个相当复杂的查询,可以非常顺畅地工作并非常快速地返回结果。

它在开发人员和测试中都运行良好,但是现在测试速度大大降低了。
在开发人员身上花费0.06秒并且在测试中大致相同的解释查询现在在测试中为7秒。

解释略有不同,我不确定为什么会这样
开发者的解释

-+ --------- + ------------------------------ + ------ + ------------------------------
-+
| id | select_type | table |类型可能的 key | key
| key_len |引用|行|额外的
|
+ ---- + -------------- + ------------ + -------- + -------- ----------------- + ------------
-+ --------- + ------------------------------ + ------ + ------------------------------
-+
| 1 |主要| |全部| NULL |空值
| NULL | NULL | 5 |
|
| 1 |主要|门票|引用| biddate_idx | biddate_idx
| 7 | showsdate.bid,showsdate.date | 78 |
|
| 2 |派生|显示全部| biddate_idx,latlong_idx |空值
| NULL | NULL | 3089 |使用临时的;使用文件
rt |
| 2 |派生|流派|引用| bandid_idx | bandid_idx
| 4 | activehw.shows.bid | 2 |使用索引
|
| 2 |派生|艺术家| eq_ref | bid_idx | bid_idx
| 4 | activehw.genres.bid | 1 |在哪里使用
|
+ ---- + -------------- + ------------ + -------- + -------- ----------------- + ------------

并在测试中

| id | select_type | table |类型可能的 key |关键key_len |引用|行|额外|
+ ---- + -------------- + ------------ + -------- + -------- ----------------- + ------------- + --------- + -------- ---------------------- + -------- + ------------------ ---------------------------- +
| 1 |主要| |全部| NULL | NULL | NULL | NULL | 5 | |
| 1 |主要|门票|引用| biddate_idx | biddate_idx | 7 | showsdate.bid,showsdate.date | 78 | |
| 2 |派生|流派|索引| bandid_idx | bandid_idx | 139 | NULL | 531281 |使用索引;使用临时的;使用文件排序|
| 2 |派生|艺术家| eq_ref | bid_idx | bid_idx | 4 | activeHW.genres.bid | 1 | |
| 2 |派生|显示eq_ref | biddate_idx,latlong_idx | biddate_idx | 7 | activeHW.artists.bid | 1 |在哪里使用
+ ---- + -------------- + ------------ + -------- + -------- ----------------- + ------------- + --------- + -------- ---------------------- + -------- + ------------------ ---------------------------- +
设置5行(6.99秒)

即使查询完全相同,表的顺序也不同。
这会导致减速吗?如果是这样,我该如何解决?
开发人员是Windows,测试是centOs。
两者都运行相同版本的mysql 5.0,并且就像我说的那样,测试运行良好,并且我没有对数据库进行任何结构上的更改。

我运行mysqlcheck,所有表都恢复正常。

最佳答案

第一个计划不对shows使用index。

如果您确定此索引可以为您提供帮助,请强制执行以下操作:

SELECT ...
FROM ..., shows FORCE INDEX (biddate_idx) , ...
WHERE ...

同时,收集表的统计信息。

关于mysql - mysql在不同的服务器上解释不同的结果,相同的查询,相同的数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/591210/

10-11 03:32
查看更多