常见的优化方式
1、首当其冲的就是索引优化。带来的性能效果很明显,但索引也尽可能少建立,蛮费资源的,尽可能数据体量大,查询慢的时候再建,而且最好只建需要索引的字段。以下是普通索引的案例。
-
300万的数据,name字段没加索引的查询时间
-
name加了索引的查询时间
注意事项:索引优化的时候有些场景并不能生效,MySQL需要配合explain关键字使用。Oracle需要配合explain plan for 使用,比如对刚刚name字段进行查询,加%号和不加% 的区别如下。还有其他未生效的情况,就不一一详解了,都是要使用执行计划排查一下就好。
-
有百分号下的查询
-
无百分号的查询
2、对bean里属性对应的数据类型要选择好。比如整形的数据,数据库里就要不要用字符串类型了。下面有MySQL 的和Java的类型对照表。
3、子查询多使用jion。一下是根据订单名称查对应的用户。原因一in 在数据过多情况下会不走索引的。
不建议的SQL:
select u.id, u.name
from user u
where id in (select user_id from `order` where name = '300')
建议的SQL
select u.id, u.name
from user u join `order` o on u.id = o.user_id
where o.name = '300'