php mssql 分页SQL语句优化 持续影响
经过SQL优化后的分面查询速度能够得到大幅提高。
<?php
/**
* @Filename :page.sql.class.php
* @CreatTime :2009-01-06
* @Descrition :此类为SQL语句处理类。
* @UpdateTime-1 :null
* @Version :jswweb1.0.0
* @Author :fkedwgwy
* @Dome :
$sql//SQL语句
$allcount//总记录数
$pagesize//页面显示记录条数
$page//当前页
$sqlc= new sqlpage($sql,$allcount,$pagesize,$page);
$sql=$sqlc->getsql();
优化后的语句:
SELECT * FROM (SELECT TOP 10 * FROM (SELECT TOP 270 Lsh,Ztm,Dyzrsm,Dyzzfs,Cbsm,Cbny,Ssh,Fbsl,jcsl from ts_gcb where Ssh like 'C%' order by Lsh asc) AS inner_tbl ORDER BY Lsh DESC) AS outer_tbl ORDER BY Lsh asc
*/
class sqlpage{
function sqlpage($sql,$allcount,$pagesize,$page){
$this->sql= $sql;//查询语名
$this->allcount= intval($allcount);//总记录数
$this->pagesize= intval($pagesize);//页面大小(显示记录数)
$this->page= intval($page);//当前页
$this->getpage();
$this->gettop();
}
function getpage(){ //获取当前页
$this->allpage=ceil( $this->allcount/$this->pagesize);//去当前小数的最大整数
if ($this->page=="" or $this->page>$this->allpage or $this->page<0 or $this->page==0){
$this->page2=1;
}else{
$this->page2=intval($this->page);//将页码转换为数字
}
}
function gettop(){ //获取子查询2的TOP大小
if ($this->page2<$this->allpage){
$this->top2=$this->pagesize;
}else{
$this->top2=$this->allcount-$this->pagesize*($this->allpage-1);
}
}
/* function getsql(){//获取SQL语句
$this->s=preg_replace("/select/i","",$this->sql);
$this->top1=$this->pagesize*$this->page2;
$this->sql1="SELECT TOP $this->top1 $this->s";
if (strpos($this->sql,"asc")){//升序
$this->sql_e="select * from ( select TOP $this->top2 * FROM ( $this->sql1 ) as aSysTable ORDER BY $this->order DESC ) as bSysTable ORDER BY $this->order ASC";
}else
//$this->sql_e="select * from ( select TOP $this->top2 * FROM ( $this->sql1 ) as aSysTable ORDER BY $this->order DESC ) as bSysTable ORDER BY $this->order ASC";
if (strpos($this->sql,"desc")){//降序
$this->sql_e="select * from ( select TOP $this->top2 * FROM ( $this->sql1 ) as aSysTable ORDER BY $this->order asc ) as bSysTable ORDER BY $this->order desc";
}else{//不处理排序的情况
$this->sql_e="select * from ( select TOP $this->top2 * FROM ( $this->sql1 ) as aSysTable ORDER BY $this->order DESC ) as bSysTable ORDER BY $this->order ASC";
}
// echo $this->sql_e;
return $this->sql_e;
}*/
function getsql()
{
$sql=$this->sql;
$this->top1=$this->pagesize*$this->page2;
$orderby = stristr($sql, 'ORDER BY');
if ($orderby !== false) {
$sort = (stripos($orderby, ' desc') !== false) ? 'desc' : 'asc';
$order = str_ireplace('ORDER BY', '', $orderby);
$order = trim(preg_replace('//bASC/b|/bDESC/b/i', '', $order));
}
$sql = preg_replace('/^SELECT/s/i', 'SELECT TOP ' . ($this->top1) . ' ', $sql);
$sql = 'SELECT * FROM (SELECT TOP ' . $this->top2 . ' * FROM (' . $sql . ') AS inner_tbl';
if ($orderby !== false) {
$sql .= ' ORDER BY ' . $order . ' ';
$sql .= (stripos($sort, 'asc') !== false) ? 'DESC' : 'ASC';
}
$sql .= ') AS outer_tbl';
if ($orderby !== false) {
$sql .= ' ORDER BY ' . $order . ' ' . $sort;
}
echo $sql;
return $sql;
}
}
?>
转载于:https://www.cnblogs.com/fengju/archive/2009/04/25/6173890.html
php mssql 分页SQL语句优化 持续影响相关推荐
- 优化的ms sql server分页sql语句
优化的ms sql server分页sql语句 发布时间: 2009-8-15 00:00 | 发布作者: hjh | | 查看: 3次 特点:一次查询,数据库Databnse只返回一页的数据 ...
- 五百万的数据,每次查询一万条,每次到300万左右的数据查询数据就非常慢(sql语句优化对查询的巨大影响)
前言 在做数据同步,起先还好,但是等到数据测试的时候,发现sql语句对性能影响是非常大的 测试数据库:mysql,id主键 原先 下面的语句都是简化版 select name from ceshi w ...
- mysql常用sql语句优化
转载自:http://www.cnblogs.com/gomysql/p/3632209.html 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素.当然还有其他方 ...
- php面试专题---MySQL常用SQL语句优化
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...
- 一个系列搞懂Mysql数据库12:从实践sql语句优化开始
Table of Contents 字段 索引 查询SQL 引擎 MyISAM InnoDB 0.自己写的海量数据sql优化实践 mysql百万级分页优化 普通分页 优化分页 总结 除非单表数据未来会 ...
- Sql语句优化及存储过程
1. 怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引. 2.:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验 ...
- SQL语句优化(落实到代码,不绕弯子)
文章目录 看完本篇文章你能学到什么? SQL语句优化 1.1 排序优化 1.1.1 索引优化 1.1.2 算法优化 1.1.3 排序优化建议 1.2 分组优化 1.3 分页优化 1.3.1 分页优化一 ...
- 事半功倍的20种SQL语句优化
事半功倍的20种SQL语句优化 1.使用where条件限定要查询的数据,避免返回多余的行 假设业务场景是查询某个用户是否是会员 优化前: List<Long> userIds = sqlM ...
- SQL语句优化技术分析
SQL语句优化技术分析 操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用 ...
- 看看Entity Framework 4生成的复杂的分页SQL语句
之前发现Entity Framework 4生成的COUNT查询语句问题,今天又发现它生成的分页SQL语句问题,而LINQ to SQL却不存在这个问题. >>> 来看一看,瞧一瞧! ...
最新文章
- IIS环境下如何批量添加、修改、删除绑定的域名
- 人类虐待机器人却遭反杀,这段人造视频在网上爆红,网友:心疼机器人
- JavaScript实现图像处理----resizeImageWidth调整图像宽度算法(附完整源码)
- MybatisPlus 多租户架构(Multi-tenancy)实现
- Android笔记: 解决ScrollView嵌套ListView的冲突方法
- spring-boot基础概念与简单应用
- 金额输入框校验和自动校正、支持指定任意位数小数decimal、支持只能输入整数、支持是否允许输入负数等功能
- fastslam matlab,fastslam 快速定位和构图的源码,一个简单的例子,3D建模,可以用作学习智能机器人自主移动 matlab 272万源代码下载- www.pudn.com...
- 关于Promise详解
- 粒子滤波简介(转载)
- 安装及卸载CrossOver for Mac
- MySQL-第十三篇使用ResultSetMetaData分析结果集
- 计算机桌面文字重影,电脑桌面字有重影怎么办
- 【项目实训】实验八 数据处理
- 电脑开始菜单没有了关机选项,怎么办
- python如何画散点图
- [Hadoop] mac搭建hadoop3.X 伪分布模式
- 对图片进行奇异值分解(SVD)
- Java事务设计模式
- 入门编程指南:如何从零开始学习编程?