• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql使用from与join两表查询的区别总结

    前言

    在mysql中,多表连接查询是很常见的需求,在使用多表查询时,可以from多个表,也可以使用join连接连个表

    这两种查询有什么区别?哪种查询的效率更高呢? 带着这些疑问,决定动手试试

    1.先在本地的mysql上先建两个表one和two

    one表

    CREATE TABLE `one` (
     `id` int(0) NOT NULL AUTO_INCREMENT,
     `one` varchar(100) NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE = InnoDB CHARACTER SET = utf8;

    two表

    CREATE TABLE `two` (
     `id` int(0) NOT NULL AUTO_INCREMENT,
     `two` varchar(100) NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE = InnoDB CHARACTER SET = utf8;

    先随便插入几条数据,查询看一下;

    select one.id,one.one,two.id,two.two from one,two where one.id=two.id;

    select one.id,one.one,two.id,two.two from one join two on one.id=two.id;

    对比这两次的查询,查询时间几乎没有区别,查看sql运行分析,也没有区别

    为了突出两种查询的性能差异,往one表中插入100w条数据,往two表中插入10w条数据,在大量数据面前,一丝一毫的差别也会被无限放大;这时候在来比较一下差异

    先使用python往数据库中插入数据,为啥用python,因为python写起了简单

    上代码

    import pymysql
    
    db = pymysql.connect("127.0.0.1", 'root', "123456", "bruce")
    cursor = db.cursor()
    
    sql = "INSERT INTO one (one) values (%s)"
    for i in range(1000000):
     cursor.executemany(sql, ['one' + str(i)])
     if i % 10000 == 0:
     db.commit()
     print(str(i) + '次 commit')
    db.commit()
    
    print('insert one ok')
    sql2 = "INSERT INTO two (two) values (%s)"
    for i in range(100000):
     cursor.executemany(sql2, ['two' + str(i)])
     if i % 10000 == 0:
     db.commit()
     print(str(i) + '次 commit')
    db.commit()
    print('insert two ok')

    耐心等待一会,插入需要一些时间;

    等数据插入完成,来查询一些看看

    先使用FROM两个表查询

    select one.id,one.one,two.id,two.two from one,two where one.id=two.id;

    用时大约20.49;

    再用JOIN查询看一下

    select one.id,one.one,two.id,two.two from one join two on one.id=two.id;

    用时19.45,在10w条数据中,1秒的误差并不算大,

    查看一下使用id作为条件约束时的查询

    查询时间没有差别
    再看一下sql执行分析

    结果还是一样的

    总结

    在mysql中使用FROM查询多表和使用JOIN连接(LEFT JOIN,RIGHT JOIN除外),查询结果,查询效率是一样的

    好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • MYSQL使用inner join 进行 查询/删除/修改示例
    • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
    • MySQL优化之使用连接(join)代替子查询
    • mysql多个left join连接查询用法分析
    • MySQL中(JOIN/ORDER BY)语句的查询过程及优化方法
    • mysql中各种常见join连表查询实例总结
    • MySQL利用profile分析慢sql详解(group left join效率高于子查询)
    • Mysql连接join查询原理知识点
    • MySQL联表查询基本操作之left-join常见的坑
    • mysql高效查询left join和group by(加索引)
    上一篇:MySQL优化中B树索引知识点总结
    下一篇:MySQL配置SSL主从复制
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql使用from与join两表查询的区别总结 mysql,使用,from,与,join,两表,