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)
所以我也检查过,并且日期类型也。现在我几乎没有任何想法去尝试。如有需要,我可以提供其他数据。
目前我正在节省单独执行查询(我希望在一个查询中执行查询)的情况。