|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL的支持者们却认为,MySQL所保留的功能都是精华,并且是你部署、MySQL学习教程配置和维护这个数据库所必不可少的一些功能。明天在写一条语句的时分,在查询剖析器里边实行
要用10s,换用别的一种写法只用少于1s的工夫,同事说是由于Sql句语实行按次的缘故原由。之前看过一点相
关的书,有一点印象,到网上找了材料,进修下。
逻辑查询处置步骤
复制代码代码以下:
(8)SELECT(9)DISTINCT
(11)<TOP_specification><select_list>
(1)FROM<left_table>
(3) <join_type>JOIN<right_table>
(2) ON<join_condition>
(4)WHERE<where_condition>
(5)GROUPBY<group_by_list>
(6)WITH{CUBEROLLUP}
(7)HAVING<having_condition>
(10)ORDERBY<order_by_list>
每一个步骤发生一个假造表,该假造表被用作下一个步骤的输出。只要最初一步天生的表前往给挪用者。如
果没有某一子句,则跳过响应的步骤。
1.FROM:对FROM子句中的前两个表实行笛卡尔积,天生假造表VT1。
2.ON:对VT1使用ON选择器。只要那些使<join_condition>为真的行才被拔出VT2。
3.OUTER(JOIN):假如指定了OUTERJOIN,保存表中未找到婚配的即将作为内部行增加到VT2,天生VT3。
假如FROM子句包括两个以上的表,则对上一个连接天生的了局表和下一个表反复实行步骤1到步骤3,直到
处置完一切的表为止。
4.对VT3使用WHERE选择器。只要使<where_condition>为TRUE的行才被拔出VT4。
5.GROUPBY:按GROUPBY子句中的列列表对VT4中的行分组,天生VT5。
6.CUBEROLLUP:把超组拔出VT5,天生VT6。
7.HAVING:对VT6使用HAVING选择器。只要使<having_condition>为TRUE的组才会被拔出VT7。
8.SELECT:处置SELECT列表,发生VT8。
9.DISTINCT:将反复的行从VT8中移除,发生VT9。
10.ORDERBY:将VT9中的行按ORDERBY子句中的列列表排序,天生一个有表(VC10)。
11.TOP:从VC10的入手下手处选择指定命量或比例的行,天生表VT11,并前往给挪用者。
以下是别的网友的增补:
仿佛自已在誊写SQL语句时因为不分明各个关头字的实行按次,常常构造的SQL语句短少很好的逻辑,凭感到"拼集"(欠好意义,假如您的SQL语句也常常"拼集",那您是否是得好好检查一下呢?,呵呵).
如许做的确是爽了本人,可苦了呆板,服务器还必要在我们的乱七八糟的SQL语句中寻觅它下一句必要实行的关头字在那里.
效力嘛,因为我们的感到神经对秒以下的变更其实不敏感,临时就以为自已写的SQL按次可有可无,"归正没甚么变更!",呵呵.实在服务器对每句SQL剖析工夫城市有具体纪录的,人人能够看一下自已按习气写的SQL和按尺度按次写的SQL剖析工夫不同有多年夜.
因而,倡议人人在平常事情中SQL语句按尺度按次写,一是专业,二是有用,呵呵,不外我以为最次要的是内心感到恬逸.
尺度的SQL的剖析按次为:
(1).FROM子句,组装来自分歧数据源的数据
(2).WHERE子句,基于指定的前提对纪录举行选择
(3).GROUPBY子句,将数据分别为多个分组
(4).利用聚合函数举行盘算
(5).利用HAVING子句选择分组
(6).盘算一切的表达式
(7).利用ORDERBY对了局集举行排序
举例申明:在先生成就表中(暂记为tb_Grade),把"考生姓名"内容不为空的纪录依照"考生姓名"分组,而且选择分组了局,选出"总成就"年夜于600分的.
尺度按次的SQL语句为:
select考生姓名,max(总成就)asmax总成就
fromtb_Grade
where考生姓名isnotnull
groupby考生姓名
havingmax(总成就)>600
orderbymax总成就
在下面的示例中SQL语句的实行按次以下:
(1).起首实行FROM子句,从tb_Grade表组装数据源的数据
(2).实行WHERE子句,选择tb_Grade表中一切数据不为NULL的数据
(3).实行GROUPBY子句,把tb_Grade表按"先生姓名"列举行分组
(4).盘算max()会萃函数,按"总成就"求出总成就中最年夜的一些数值
(5).实行HAVING子句,选择课程的总成就年夜于600分的.
(7).实行ORDERBY子句,把最初的了局按"Max成就"举行排序.
好了,看了这些以后,我信任人人都晓得了SQL中select语句的实行按次了吧!哈哈!对于现有业务,可以轻松移植到MySQL。当你需要替换掉老的硬件,当你需要削减历史遗留下的老系统的时候,选用MySQL对于财务部门来说更具吸引力。 |
|