MySQL数据库SQL查询优化技巧之SE

北京重点湿疹医院 http://pf.39.net/bdfyy/bjzkbdfyy/210412/8839620.html

#MYSQL#本篇主要介绍的是最基本的select查询语法和使用方法,以及SELECT的执行流程,了解了SELECT的执行流程还是很重要的,重要我们才能有针对性地去进行优化,比如select在执行的时候会把所以的字段编程成大写字母,这样我们在起初编写SELECT语句时就可以把所以的字母进行大写,这样就省去了程序为把SQL语句变成大写的消耗,速度自然就会提高。

查询(SELECT)语句是SQL的核心,是SQL语句中使用最频繁的语句之一。因为大量的选项可以用于SELECT语句,所以整个SQL数据查询功能就是围着SELECT语句进行的。

查询可以按复杂性进行划分,从用一个简单语句返回表中的所有行,到用一个语句连接多个表并定义搜索条件。本篇在介绍SELECT语句基本结构的基础上,主要介绍SQL的简单查询操作。

查询的基本结构在SQL语言中,对数据库的读操作就体现在SELECT查询语句上。SELECT语句由一系列灵活的子句组成,这些字句共同确定检索哪些数据。

SELECT语句的结构SELECT语句的基本语法可以分成几个特定的子句。通过每个字句细化查询,以便返回需要的数据。SELECT语句的完整语法如下。

我们可以看出,必需的子句只有SELECT子句和FROM子句,其他的字句都是可选的。各子句具体含义如下。关键词SELECT后面输入要显示的字段清单。

SELECT子句包含可选关键字DISTINCT和ALL.在需要删除查询结果中相同的行时,我们使用关键字DISTINCT;在需要返回查询结果中的所有行时,使用关键字ALL.如果没有指定任何一个关键字,那么关键字ALL就是默认的关键宇。

而FROM子句包括关键字FROM和一个或多个表结构。如果表结构不止一个,那么它们之间必须用逗号分开。一般情况下,表结构是表的名称,但也可以是一种子查询。在WHERE子句中列出搜索标准,用于选择要显示的数据行。如果SELECT语句没有WHERE子句,DBMS假设目标表中的所有行都满足搜索条件.

GROUPBY子句用于分组查询结果,根据group._by.expression中列出的列,归纳信息类型,汇总相关数据。HAVING子句列出另外的行选择标准,以便根据GROUPBY子甸产生的结果筛选行。

ORDERBY子句接受SELECT子句的输出,并且按照ORDERBY子句中的规范对查询结果进行排列。这里的规范就是ASC和DESC关键字。ASC关键字表示升序

排列结果,DESC关键字表示降序排列结果。如果没有指定任何一个关键字,那么ASC就是默认的关键字。如果没有ORDERBY子句,DBMS将根据输入表中的数据来显示数据。

SELECT语句的执行步骤从SELECT语句的语法结构可知,SELECT语句包含很多子句。当执行SELECT语句时,DBMS的执行步骤可表示如下。

(I)DBMS执行FROM子句,根据FROM子句中的-一个或多个表创建工作表。如果在FROM子旬中有两个或多个表,DBMS将对表进行交叉连接,作为工作表。

(2)如果有WHERE子句,DBMS将WHERE子句列出的搜索条件作用于步骤生成的工作表。DBMS将保留那些满足搜索条件的行,删除那些不满足搜索条件的行。

(3)如果有GROUPBY子句,DBMS将步骤2生成的结果表中的行分成多个组,每个组所有行的group._byexpression字段具有相同的值,DBMS将每组减少到单行,然后将其添加到新的结果表中。

(4)如果有HAVING子句,DBMS将HAVING子句列出的搜索条件作用于步骤3生成的“组合”表中的每一行。DBMS将保留那些满足搜索条件的行,删除那些不满足搜索条件的行。

(5)DBMS将SELECT子句作用于结果表,删除结果表中不包含在select_list中的列。如果SELECT子句包含DISTINCT关键字,DBMS将从结果中删除重复的行。

(6)如果有ORDERBY子句,DBMS按指定的排序规则对结果进行排序。

(7)对于交互式的SELECT语句,DBMS在屏幕上显示结果,对于嵌入式SQL,使用游标将结果传递给宿主程序中.

以上就是SQLSELECT语句的基本执行过程,对于初学者来讲,可能很难理解。之所以在这里提出,是为了让读者对SELECT语句有一个整体的了解。也欢迎在评论区说出你想法,共同探讨sql的优化。




转载请注明:http://www.aierlanlan.com/cyrz/2047.html