Mysql - 差异无法加载查询结果

时间:2013-10-01 07:50:23

标签: mysql

在暂存环境中使用我的localhost检索查询结果时遇到奇怪的事件

所以我连接了8个表,为简单起见,查询如下:

SELECT
*
FROM
tsales, stores, vma_users, tracks, albums, fa_country, exchange_rates, outlets
WHERE tsales.type = 'T' 
AND stores.outlet_id = exchange_rates.outlet_id
AND stores.outlet_id = outlets.id
AND tsales.store_id = exchange_rates.outlet_id
AND tsales.sale_year = exchange_rates.year
AND tsales.sale_month = exchange_rates.month
AND tsales.currency = exchange_rates.currency
AND tsales.track_id = tracks.id
AND tracks.album_id = albums.id
AND tsales.country = fa_country.iso
AND tsales.account_id = vma_users.id
AND tsales.account_id = 2129
AND tsales.sale_year = 2013
AND tsales.sale_month = 3
ORDER BY tsales.id

(不要担心查询,我也有一个左连接版本)

每当我在登台环境中运行此查询时,我可以检索结果,例如26k行,同时每当我在我的localhost中运行这个sql phpmyadmin似乎什么也没发生,我甚至无法得到结果以后它会显示像这样的东西

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\apps\phpmyadmin3.4.10.1\libraries\session.inc.php on line 92 

我的localhost和staging的数据和结构是相同的。我刚刚更新了它。

你能帮我解决一下发生了什么。我知道这种情况发生在大记录上,但我预计只有26k行,所以没关系。

使用EXPLAIN运行查询:

1   SIMPLE  outlets     ALL     NULL    NULL    NULL    NULL    46  Using temporary; Using filesort
1   SIMPLE  stores  ALL     NULL    NULL    NULL    NULL    55  Using where; Using join buffer
1   SIMPLE  fa_country  ALL     NULL    NULL    NULL    NULL    213     Using join buffer
1   SIMPLE  exchange_rates  ALL     NULL    NULL    NULL    NULL    1390    Using where; Using join buffer
1   SIMPLE  vma_users   ALL     NULL    NULL    NULL    NULL    3957    Using where; Using join buffer
1   SIMPLE  albums  ALL     NULL    NULL    NULL    NULL    78458   Using join buffer
1   SIMPLE  tsales  ALL     NULL    NULL    NULL    NULL    893483  Using where; Using join buffer
1   SIMPLE  tracks  eq_ref  PRIMARY,album_id    PRIMARY     4   valleyarm_digital.tsales.track_id   1   Using where

1 个答案:

答案 0 :(得分:0)

在这里向专业人士解答我自己的问题。

获取查询结果与登台开发和localhost之间的差异是因为当在localhost中导入sql文件时丢失了索引第一印象是它还将复制索引但是您需要从登台到重新创建整个模式本地主机。

正如Mysql Indexes中所解释的,MySQL可以快速确定在数据文件中间寻找的位置,而无需查看所有数据。

因此,在不使用索引的情况下,它会导致完全扫描,导致无法检索结果。