1
最近我將MySQL版本從5.5.8更改爲5.6.23,並陷入了一些查詢性能問題。在舊的MySQL中;查詢是在一段合理的時間內執行的,但是在新的一個freebsd服務器+ mysql服務器變得沒有響應。 Linux命令Mysql查詢/服務器優化
[Linux的〜]頂
節目的MySQL> 100%WCPU執行查詢時。如果我分別執行每個子查詢,結果將在幾秒鐘內提取。此時mysql和apache需要重啓才能繼續工作。
所以我的問題是,下一個查詢的優化:
SELECT concat_ws('##', pos.name,
(SELECT COUNT(*) FROM nalogi n
WHERE n.other_createtime >= '2015-03-01 00:00:00'
AND n.other_createtime <= '2015-03-31 23:59:59'
AND n.nalog_invalid = 'N' AND n.other_pos = pos.id),
(SELECT COUNT(*) FROM nalogi n, posiljke_nalogi pn, posiljke p
WHERE p.other_createtime >= '2015-03-01 00:00:00'
AND p.other_createtime <= '2015-03-31 23:59:59'
AND pn.nalogid = n.id
AND pn.masterId = p.id
AND p.path_from_type = 'center'
AND n.nalog_invalid = 'N'
AND (p.path_to_type = 'pos' OR p.path_to_type = 'customer')
AND n.other_pos = pos.id)) 'entry' FROM spl_pos pos ORDER BY pos.id
目前我使用的索引,並在內存表的高速緩存。 歡迎任何速度優化或其他建議。
我搜索了網絡,發現一些很好的來源source1,source2和許多其他我已經在現有的查詢中使用。我還檢查了我比較的字符串類型。根據經驗,我選擇一些行時,有一些問題:
where x.field=field (slow)
where x.field="field" (much faster)
所以我也檢查過,並且日期類型也。現在我幾乎沒有任何想法去嘗試。如有需要,我可以提供其他數據。
目前我正在節省單獨執行查詢(我希望在一個查詢中執行查詢)的情況。