在暂存环境中检索我的查询结果以反对使用我的本地主机时,我遇到了一个奇怪的事件
所以我连接了 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 行,同时每当我在我的本地主机中运行它时,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