MYSQL数据库疯了,CPU占用99%,如何优化?
打开一个页面.只执行了一条SQL语句SELECT * FROM `personal` WHERE `Pers_Depart`='中文'AND`Pers_Regis` NOT IN (SELECT `Exp_Num` FROM `expand`) AND `Pers_Operate` NOT LIKE '%销%' LIMIT 0,20
personal表数据大概2W条
expand数据表大概1W条
如何优化这个语句?
主要是先看执行计划:explain
Pers_Depart字段要有索引
MySQL中子查询效果不好,尤其是当子集数据很大时,所以,尽量改成两表联合查询的方式
Pers_Operate用不上索引
.飘过。 以我的经验not in 在mysql中的查询速度不佳,尽量改成表连接的方式吧。 数据量应该还不算太大
把两个表的表结构和index发下 ,,,,,
发具体表信息 personal表增加一个tinyint字段has_expand,默认值为0,插入expand表的时候,把has_expand设置为1。查询的时候就不用子查询了。 减少表连接,使用索引 5.6之前的版本尽量用联合查询吧,尽量不要用子查询;在你查询的条件列上加索引,查看执行计划是否走了索引。这样应该要快些了。
页:
[1]