<b>MySQL本领:做好Limit优化</b>[MySQL防范]
本文“<b>MySQL本领:做好Limit优化</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
我们在查询数据时,常常需求指定返回几行数据.如目前有一个B/S架构的利用程序,其每一页大概只显示30条记录.此时为了提高显示的效率,普通就要求数据库一次只返回三十条记录.等用户按下一页的时刻,再从数据库中返回30条记录,以此类推.这可以缩短数据显示的时间.当查询的基表对比大时,这个办法非常有效.此时可以利用Limit关键字来实现这个需求.Limit子句可以被用于强迫Select查询语句返回指定的记录数目.
普通情形下,Limit关键字可以承受一个大概两个数字参数.需求注意的是,这个参数必须是一个整数常量.假如用户给定两个参数,则第一个参数表示第一个返回记录行的偏移量,第二个参数则表示返回记录行的最大数据.别的需求提醒的是,初始记录行的偏移量是0,而不是1.不罕用户会在这里出错误.
固然利用了Limit语句来限制返回的记录数,从而可以提高利用程序的工作效率.但是其也会给系统的性能带来一些负面影响.如大概会招致全表扫描等等.为此笔者给出一些Limit关键字的优化的倡议,以供大家参考.
倡议一:机动利用Limit 0子句
按照Limit关键字的定义,假如参数为0的话,则其返回的是空记录.这看起来仿佛没有多少的意义.其实不然.在实际工作中,机动利用这个0参数,可以给我们带来很大的收获.
如目前数据库工程师想要确认一下某个查询语句的有效性,假如直接运行这个查询语句,需求等候其返回的记录.假如触及的记录数目对比多,大概运算逻辑对比复杂,那么需求等到对比长的时间.此时便可以在Select查询语句中,利用Limit 0子句.只要查询语句没有语法上的错误,这便可以让数据库快速的返回一个空调集.从而帮忙数据库计划人员疾速的判断查询语句的有效性.别的这个空集和中还会返回某个表的各个字段的数据范例.即通过这个Limit 0子句还可以查询某个表的表构造.
可见机动利用Limir 0子句,确切可以给我们带来不小的收益.不过需求注意的是,在某些特定的场所下,这个子句大概不会见效.如普通情形下,在Monitor工作环境中不支持这个Limit 0子句.此时后果只会显示Empty Set,而不是我们所需求的后果.
倡议二:Limit与Group By结合利用
Group By关键字主要用来对数据举行分类汇总.不过在分类汇总之前,常常需求对数据先进性排序.而Limit语句用来指定显示的后果数目时,常常也需求触及到记录的分类汇总与排序的问题.如目前一个学校成就管理系统中,需求对学生的总分举行排序.即先对学生各科成就举行汇总,然后显示其排名为前50的记录.此时就需求同时用到Group By子句和Limit子句.其实从这个案例中我们也可以看出,这两个子句彼此依靠的特点.恰是因为这种特点(常常彼此结合利用),为此结合Group By子句可以提高Limit的查询效率.
这主如果因为二者假如一同利用的话,Limit关键字将不会再反复计算任何不必要的Group By的值.换句话说,在某些情形下,Group By子句可以通过次序来读取键大概在键上做排序来办理分类汇总时的排序问题,然后再计算择要直到关键字的值的改变成止.如此的话,两个子句所需求做的一些共同性的工作,只要做一次便可.这便可以从别的一次角度用来提高利用系统的性能.相比先做一个视图对数据举行分类汇总的运算,再利用一个查询语句来抽取特定数目的记录,效率就要高一点.因为后者是将两个子句脱离来利用,就无法享遭到结合利用所表现的上风.
以上是“<b>MySQL本领:做好Limit优化</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |