mysqlsql语句的优化面试

mysqlsql语句的优化面试

ID:23325840

大小:72.00 KB

页数:11页

时间:2018-11-07

mysqlsql语句的优化面试_第1页
mysqlsql语句的优化面试_第2页
mysqlsql语句的优化面试_第3页
mysqlsql语句的优化面试_第4页
mysqlsql语句的优化面试_第5页
资源描述:

《mysqlsql语句的优化面试》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、mysqlsql语句的优化面试MySQL查询语句优化心得MySQL优化Sql查询语句优化心得MySQL优化2010-12-2414:31作为一个互联X开发工程师,数据库的知识是必不可少的,要是写几条查询效率很差的SQL,当数据库的数据到达一定级别以后,没几个人同时访问你的X站,就能把你的一台服务器高挂啦!【个人认为:最为简单的测试方法就是把SQL语句在命令行下运行,若查询的语句需要0.03秒以上的SQL语句都需要优化。】如下的大多都来自X络:终归起来、都是一些简单SQL优化,不敢保证这说法绝对的权威哦。phpma1

2、、用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻X络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SELECT*FROMT1语句,要用到几列就选择几列如:SELECTCOL1,COL2FROMT1;在可能的情况下尽量限制尽量结果集行数如:SELECTTOP300COL1,COL2,COL3FROMT1,因为某些情况下用户是不需

3、要那么多的数据的。不要在应用中使用数据库游标,游标是非常有用的工具,但比使用常规的、面向集的SQL语句需要更大的开销;按照特定顺序提取数据的查找。2、避免使用不兼容的数据类型。例如float和int、char和varchar、binary和varbinary是不兼容的。数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。例如:SELECTnameFROMemployeeT1T1RECORDRECORDmembersmembersemployee(T1.C1)FROMT1T2(T1.C1)FROMT1T2

4、table_nametable_namehdr_tbla----tbla表示tbl用别名a代替dtl_tblbhdr_tblaLEFTJOINdtl_tblbONa.hdr_key=b.hdr_keyhdr_tbldtl_tbl)三种写法都可以得到同样正确的结果,但是效率依次降低。7、尽量避免在索引过的字符数据中,使用非打头字母搜索。这也使得引擎无法利用索引。见如下例子:SELECT*FROMT1ELIKE‘%L%’SELECT*FROMT1E,2,1)=’L’SELECT*FROMT1ELIKE‘L%’即使NAM

5、E字段建有索引,前两个查询依然无法利用索引完成加快操作,引擎不得不对全表所有数据逐条操作来完成任务。而第三个查询能够使用索引来加快操作。51ruan.8、分利用连接条件,在某种情况下,两个表之间可能不只一个的连接条件,这时在(A.AMOUNT)FROMACCOUNTA,CARDB(A.AMOUNT)FROMACCOUNTA,CARDBordersordersordersT1T1DetailsDetailsT1T1T1T1(INDEX=IX_ProcessID)T1语句,要用到几列就选择几列如:SELECTCOL1,

6、COL2FROMT1;在可能的情况下尽量限制尽量结果集行数如:SELECTTOP300COL1,COL2,COL3FROMT1,因为某些情况下用户是不需要那么多的数据的。在没有建索引的情况下,数据库查找某一条数据,就必须进行全表扫描了,对所有数据进行一次遍历,查找出符合条件的记录。在数据量比较小的情况下,也许看不出明显的差别,但是当数据量大的情况下,这种情况就是极为糟糕的了。SQL语句在SQL中是如何执行的,他们担心自己所写的SQL语句会被SQLSERVER误解。比如:select*fromtable1e=?zha

7、ngsan?andtID>10000和执行:select*fromtable1e=?zhangsan?一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name=?zhangsan?的,而后再根据限制条件条件tID>10000来提出查询结果。事实上,这样的担心是不必要的。SQLSERVER中有一个“查询分析优化器”,它可以计算出e=?张三?价

8、格>50005000<价格Name=?张三?and价格>5000如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是SQLSERVER必须对每一行都判断它是否满足SCL,SCRAX(IL.score)FROMSCIL,StudentIM.S#=IL.S#GROUPBYIL.C#)andR.Score=(SELECTMIN

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。