MySql left join 多表连接查询优化语句

先过滤条件然后再根据表连接 同时在表中建立相关查询字段的索引这样在大数据多表联合查询的情况下速度相当快

SELECT M.*,SS.SensorCode,SS.SensorStatus,SS.ManufacturerId,SS.Electricity,
SS.Voltage,SS.MinElectricity,SS.MinVoltage,SS.Temperature,SS.StatusUpdteDate,SS.UpdateStatus ,tp.PricingStrategyid,tps.FreeDuration,bat.BerthTypeId
FROM
(SELECT T.* , BS.ParkStatus,BS.ChangeTime ,CA.CantonName, SE.SectionName
 FROM
(SELECT A.* ,B.BerthId,B.BerthCode,B.BerthAddress,B.BerthStatus,B.LineDirection,B.CantonId,B.SectionId
FROM
(SELECT AR.AreaId,AR.AreaCode,AR.AreaName FROM   SYS_Area  AS AR  WHERE 1=1   AND AR.AreaCode=‘110‘ ) A
LEFT JOIN  SYS_Berth AS B ON B.AreaId=A.AreaId ) T
JOIN SYS_BerthStatus AS BS ON T.BerthCode=BS.BerthCode
JOIN SYS_Canton AS CA ON T.CantonId=CA.CantonId
JOIN SYS_Section AS SE ON T.SectionId=SE.SectionId )M

LEFT JOIN SYS_Sensor SS ON M.BerthCode=SS.BerthCode
LEFT JOIN TRA_PricingBerth AS tp ON tp.BerthCode=M.BerthCode 

LEFT JOIN TRA_PricingStrategy  AS tps ON tps.PricingStrategyId=tp.PricingStrategyId
LEFT  JOIN SYS_BerthAndType AS bat ON bat.BerthCode=M.BerthCode
ORDER BY BerthCode ASC
时间: 2024-11-08 17:45:01

MySql left join 多表连接查询优化语句的相关文章

MySQL JOIN 多表连接

除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接.多表连接基本语法如下: 1 ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON condition INNER|LEFT|RIGHTJOIN table3 ON condition ... JOIN 多表连接实现了从多个表中获取相关数据,下面是三个原始数据表: article 文章表: aid title content uid tid 1 文章1 文章1正文内容… 1 1

mysql笔记5_多表连接

多表连接: 交叉连接(笛卡尔积)cross join(基本上无实际意义,避免). 内连接,即等值连接 inner join...on... 左外连接 left join...on...主表的记录全部显示,如果没有记录则补空.连接左边的表作为主表. 右外连接 right join...on...同左外连接. 全外连接 自连接 主表.从表是同一张表. 子查询:为主查询提供查询数据. mysql笔记5_多表连接

MySQL千万级多表关联SQL语句调优

本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使千万级表关联查询第一页结果能在2秒内完成(真实业务告警系统优化结果). 需要优化的查询:使用explain 出现了Using temporary: 有分页时出现了Using filesort则表示使用不了索引,需要根据下面的技巧来调整语句 rows过多,或者几乎是全表的记录数: key 是 (NULL): possible_keys 出现过多(待选)索引. 1.使用explain语法,对SQL进行

1.mySql基本的单表数据查找语句

1.一些函数,如lower(小写),upper(大写),initcap(首字母大写).特别要理解的是sum(a)是计算a的总和,count(a)是含有a的记录数,计算的是总的记录数. 2.基本的语句selete    from  where groub by  having  order by 3.执行顺序: from where group by having select order by  也就是先查到哪个表,然后按照什么来分,最后再显示出来,再按照什么顺序显示. 书写顺序:就是把sele

SQL Server三种表连接原理

http://msdn.microsoft.com/zh-cn/library/dn144699.aspx 简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge Join,Hash Join这三种物理连接中的一种.理解这三种物理连接是理解在表连接时解决性能问题的基础,下面我来对这三种连接的原理,适用场景进行描述. 嵌套循环连接(Nested Loop J

单表查询、多表查询、虚拟表连接查询

  单表查询,以下面这个表为例:+----+------------+--------+-----+------------+----------------------------+--------------+------------+--------+-----------+| id | name | sex | age | hire_date | post | post_comment | salary | office | depart_id |+----+------------+-

浅析表连接

表连接 表连接是一个很有意思的事情,报表中常用的就是JOIN和LEFT JOIN,可能大家也会看到INNER JOIN , LEFT OUTER JOIN等,它们的关系,请读者自己网上查阅,在这里我们要卖个关子. 对初学者来说,表连接是很容易迷糊的一点.容易混淆的原因是因为进行表连接时,经常会把关联字段和关联字段中存的数据混在一起说,容易给人误解. 还是第2节中的例子,我们知道,<人员主集>.'国籍'和<代码项>.'代码项内码'的数据是有关联的,一般在我们的系统中,'国籍'中的数据

mysql join表连接

1.表连接,就是将两个表合并起来,被合并的表的记录要通过中间字段,一一匹配起来左边的表的记录,形成一张临时的合并的表,并且每条记录的值都是两张表一一准确对应的 实例 尝试以下实例: [email protected]# mysql -u root -p password; Enter password:******* mysql> use RUNOOB; Database changed mysql> SELECT * FROM tcount_tbl; +-----------------+-

NNER JOIN连接两个表、三个表、五个表的SQL语句

NNER JOIN连接两个表.三个表.五个表的SQL语句 2013-04-14 15:13:11来源:西部e网作者: SQL INNER JOIN关键字表示在表中存在至少一个匹配时,INNER JOIN 关键字返回行. SQL INNER JOIN关键字表示在表中存在至少一个匹配时,INNER JOIN 关键字返回行. 1.连接两个数据表的用法: FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSor