注意:5个表连接在真实项目中不推荐这样连接,实战中,表连接不能超过3张表,否则会有性能问题。
SELECT s.s_id, s.s_name, s.s_phone, s.s_qq, s.s_age, s.s_birthday, s.s_stars, s.s_attribute, clazz.clazz_id, clazz.c_name, g.g_id, g.g_name, c.c_id, c.c_name, m.m_id, m.m_name FROM ( #6.select * from t_student where s_name like '王恒%' #7.select * from t_student where instr(s_name,'王恒') #8..select s_id,clazz_id,g_id,c_id,s_name,s_phone,s_qq,s_age,s_birthday,s_stars,s_attribute from t_student where instr(s_name,'王恒') ) s LEFT JOIN t_clazz clazz ON s.clazz_id = clazz.clazz_id LEFT JOIN t_group g ON s.g_id = g.g_id LEFT JOIN t_city c ON s.c_id = c.c_id LEFT JOIN m_s_fk ms ON s.s_id = ms.s_id LEFT JOIN t_mark m ON ms.m_id = m.m_id
# 0.00140350 select * from t_student where s_name like '王恒%'
1、instr优化
#0.00124200 select * from t_student where instr(s_name,'王恒')
2、写全字段
# 0.00059350 select s_id,clazz_id,g_id,c_id,s_name,s_phone,s_qq,s_age,s_birthday,s_stars,s_attribute from t_student where instr(s_name,'王恒')
3、索引优化
#创建索引 0.00030400 create index s_name on t_student(s_name);
总结:
- 1.sql 在使用SELECT语句或者使用其它语句时,直接使用*和把所有的字段弄上去查询,性能有很大差距,所以我们平时写查询最好用字段写上
2.instr(str,substr)
:返回字符串str串中substr子串第一个出现的位置,没有找到字符串返回0,否则返回位置(从1开始) 进行优化- 创建索引优化
原始模糊查询(0.00140350
)<instr优化(0.00124200
)<写全字段(0.00059350
)<索引优化( 0.00030400
)[注:索引优化只能使用:like keyword%!索(MISSING)引有效]