wayking 发表于 2011-4-18 16:35:59

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条

如何优化这个语句?



kider 发表于 2011-4-19 10:15:29

主要是先看执行计划:explain
Pers_Depart字段要有索引
MySQL中子查询效果不好,尤其是当子集数据很大时,所以,尽量改成两表联合查询的方式
Pers_Operate用不上索引

Winston 发表于 2011-5-12 15:37:36

.飘过。

shyeagle 发表于 2011-5-13 09:35:25

以我的经验not in 在mysql中的查询速度不佳,尽量改成表连接的方式吧。 数据量应该还不算太大

hm3030 发表于 2011-5-14 22:59:27

把两个表的表结构和index发下

devilkin 发表于 2011-9-15 13:16:21

,,,,,
发具体表信息

小新 发表于 2013-3-18 11:54:21

personal表增加一个tinyint字段has_expand,默认值为0,插入expand表的时候,把has_expand设置为1。查询的时候就不用子查询了。

weiyz2011 发表于 2013-3-22 13:58:58

减少表连接,使用索引

末猪 发表于 2013-4-26 16:42:53

5.6之前的版本尽量用联合查询吧,尽量不要用子查询;在你查询的条件列上加索引,查看执行计划是否走了索引。这样应该要快些了。
页: [1]
查看完整版本: MYSQL数据库疯了,CPU占用99%,如何优化?