【问题标题】:mysql join and select speed differencemysql join和select速度的区别
【发布时间】:2011-04-14 09:26:31
【问题描述】:

我要sql查询

SELECT child.name,(COUNT(parent.name) - (parentDepth.depth + 1)) AS depth 
from category as child,category as parent,category as sub_parent,
( select child.name,(count(parent.name)-1) as depth from category as child,category as parent where child.lft between parent.lft and parent.rgt and child.name='ELECTRONICS' ) as parentDepth 
where child.lft between parent.lft and parent.rgt and child.lft between sub_parent.lft and sub_parent.rgt and sub_parent.name=parentDepth.name 
group by child.name having depth >0 order by child.lft

使用连接

SELECT child.name,(COUNT(parent.name) - (parentDepth.depth + 1)) AS depth from 
category as child join category as parent on child.lft between parent.lft and parent.rgt join category as sub_parent on child.lft between sub_parent.lft and sub_parent.rgt,
( select child.name,(count(parent.name)-1) as depth from category as child,category as parent where child.lft between parent.lft and parent.rgt and child.name='ELECTRONICS' ) as parentDepth 
where sub_parent.name=parentDepth.name 
group by child.name having depth >0 order by child.lft

我想知道一个更好!我的意思是性能和速度

【问题讨论】:

    标签: mysql select join performance


    【解决方案1】:

    性能差异(如果存在差异)绝对是最小的。基本上,,-syntax 只不过是编写连接的更短形式,因此唯一的区别是用于“解析”语句的时间。要在数据库上获得更好的性能,还有很多更重要的事情要做,比如

    • 使用索引
    • 不要选择未使用的字段
    • 选择最适合您需求的存储引擎

    就我个人而言,我会使用第二种语法,因为它对我来说更具可读性(并且可读代码很重要——比这种微小的性能差异重要得多)——但这只是我的主观意见,其他人可能会喜欢第一种语法,因为它是更短...

    【讨论】:

      【解决方案2】:

      在查询前使用 EXPLAIN 来获取有关 MySQL 将如何执行您的查询、它将使用哪些表、它将读取多少行、利用哪些索引等信息...

      其他解决方案是多次运行此查询(比如说 100 次)并测量平均响应时间。

      查看您的查询让我想到您可能会写出更好的查询(但不确定,乍一看太复杂了)。

      【讨论】:

        【解决方案3】:

        我更喜欢实际测试和获取数据而不是推测(即使一个人的推理看起来很合理)。

        在单个查询级别,可以使用 SHOW PROFILE 语句来显示在当前会话过程中执行的语句的分析信息:

        http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html

        这将使您了解查询在 MySQL 数据库上运行所需的时间(即查询的持续时间或速度)。当然,在应用程序级别上,可能还有其他风险。

        关于如何优化 MySQL 的一般概述,值得一看的一本有趣的书是 Baron Schwartz 等人的“高性能 MySQL”,由 O'Reilly Media, Inc. 出版(ISBN:9780596101718)@ 987654322@
        这本书详细介绍了如何解释 EXPLAIN 语句的输出以及许多其他有用的主题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-03
          • 2010-10-08
          • 2011-06-14
          • 2018-06-23
          相关资源
          最近更新 更多