2、创建联合索引,从坐到右分别为:userid、openId、name  

2、 #### --------------  多表联合查询 update 2019/03/13  --------------- ####

(8)在Join表的时候使用相同类型的例,并将其索引

如果你的应用程序有很多 JOIN 查询,你应该确认两个表中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。

而且,这些被用来Join的字段,应该是相同的类型的。例如:如果你要把 DECIMAL 字段和一个 INT 字段Join在一起,MySQL就无法使用它们的索引。对于那些STRING类型,还需要有相同的字符集才行。(两个表的字符集有可能不一样)

//在state中查找company

SELECT company_name FROM users

LEFT JOIN companies ON (users.state = companies.state)

WHERE users.id = $user_id"

//两个 state 字段应该是被建过索引的,而且应该是相当的类型,相同的字符集

使用示例:

SQL语句:

EXPLAIN
SELECT sl.*,s.student_name,c.course_name,t.term_name,cl.class_name FROM
cmf_student_score_log sl LEFT JOIN cmf_student s ON s.sno=sl.sno
LEFT JOIN cmf_class_members cm ON sl.sno=cm.sno //红色这两个是走的 单列sno普通索引
LEFT JOIN cmf_class cl ON cl.id=cm.class_id
LEFT JOIN cmf_term t ON t.id=sl.term_id      //橙色这三个是走的id主键索引
LEFT JOIN cmf_course c ON c.id=sl.course_id
WHERE sl.delete_time is NULL
AND sl.status=
ORDER BY sl.term_id DESC,sl.sno ASC
;

结语:加上索引后,性能提升18倍。 0.018s ---> 0.001s

#### --------------  多表联合查询 update 2019/03/13  --------------- ####

最新文章

  1. 帝国cms内容页调用缩略图的原始尺寸图片
  2. BZOJ1188 [HNOI2007]分裂游戏(SG函数)
  3. hihocoder [Offer收割]编程练习赛4
  4. getTickCount()函数 VS GetTickCount()函数
  5. VS2015 Apache Cordova第一个Android和IOS应用
  6. 2016 版 Laravel 系列入门教程(二)【最适合中国人的 Laravel 教程】
  7. jsp页面显示数据库乱码
  8. 【原】模式之-适配器Adapter模式
  9. UVa465 - Overflow
  10. POJ1258 基础最小生成树
  11. UITextField成为第一响应者
  12. Cocos Creator 获取当前 Pageview 翻页到第几页的事件索引
  13. [luaj]在安卓用使用luaj
  14. css之positon与z-index
  15. [日常工作] Linux与Windows的连接访问以及数据共享等方法 vncserver smb xshell xftp winscp mount等
  16. [DEFCON全球黑客大会] 针对CTF,大家都是怎么训练的?
  17. VS2008中设置字体大小和添加显示行号
  18. Tensorflow(一)
  19. ubuntu 14.04 添加、删除用户,修改用户名称,修改主机名
  20. tbb静态库编译

热门文章

  1. CVS环境搭建
  2. .NET:如何实现 “热插拔”?
  3. 《JavaScript网页特效经典300例》
  4. ldap客户端以及jenkins的配置
  5. C++ 竞赛常用头文件
  6. STL队列 之FIFO队列(queue)、优先队列(priority_queue)、双端队列(deque)
  7. ILMerge-GUI的使用
  8. js实现手机页面定位
  9. 转: 网卡名字eth0,eth1的修改方法
  10. POJ 1265:Area