2017-03-27 77 views
1

我遇到了SQL查詢問題。Magento sql查詢沒有索引

目前我在不同的服務器上有兩個magento版本,都是從1.9.2.4升級到1.9.3.2。

問題是,當我檢查SHOW FULL PROCESSLIST查詢時,我發現他們花了很多時間。經過一些研究,我試圖在兩臺服務器上運行相同的查詢(直接通過SQL命令)。

結果是1:15(68 x 263行vs 68 x 961902),其中一位同事檢查了EXPLAIN SQL函數,發現在較慢的查詢服務器中沒有密鑰(索引)。試圖運行添加USE INDEX()和使用快速查詢服務器的密鑰,似乎這是問題,因爲查詢以相同的結果和速度進行。

總之我們有些MYSQL配置不正確。

也許有人可以建議哪個MYSQL配置或服務器變量可以導致這個問題? 因爲目前我沒有想法。我嘗試了谷歌搜索,但沒有結果可以幫助我。

SQL查詢。

SELECT `main_table`.`entity_id`, main_table.`name`, main_table.`path`, 
     `main_table`.`is_active`, `main_table`.`is_anchor`, 
     `url_rewrite`.`request_path` 
    FROM `catalog_category_flat_store_1` AS `main_table` 
    LEFT JOIN `core_url_rewrite` AS `url_rewrite` 
     ON url_rewrite.category_id=main_table.entity_id 
     AND url_rewrite.is_system=1 
     AND url_rewrite.store_id = 1 
     AND url_rewrite.id_path LIKE 'category/%' 
    WHERE (main_table.include_in_menu = '1') 
     AND (main_table.is_active = '1') 
     AND (main_table.path like '1/2/3/%') 
     AND (`level` <= 3) 
    ORDER BY `main_table`.`position` ASC 
+0

我有同樣的問題,當我從服務器機智移動magento h MySQL 5.5到MySQL 5.7的服務器。 這裏是我的問題https://stackoverflow.com/questions/43225701/mysql-5-5-to-5-7-stopped-using-indexes 你有沒有找到任何解決方案? 我目前正在嘗試在magento中找到「使用索引」的位置:) –

+1

在我的解決方案中張貼內容 – Macas

回答

0

不幸的是,只有MySQL從5.7降級到5.5才解決了這個問題。

0

也許是最好的指標將是這些 '複合' 指數:

main_table: INDEX(include_in_menu, is_active, path) 
url_rewrite: INDEX(is_system, store_id, category_id, id_path) 

有一些理由使用LEFT

如果添加這些索引後仍有問題,請提供SHOW CREATE TABLEEXPLAIN SELECT ...

0

可以更換

core_url_rewrite.id_path LIKE 'category/%' 

core_url_rewrite.id_path REGEXP '^category/' 

或者增加一個條件查詢:

core_url_rewrite.category_id is not null 

Magento + MySQL 5.7 = Slow Queries