>  기사  >  백엔드 개발  >  select 문 php mssql 페이징 SQL 문 최적화 지속적인 영향

select 문 php mssql 페이징 SQL 문 최적화 지속적인 영향

WBOY
WBOY원래의
2016-07-29 08:39:50841검색

코드 복사 코드는 다음과 같습니다.


/**
* @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 여기서 Ssh는 'C%'와 같은 순서로 Lsh asc) AS inner_tbl ORDER BY Lsh DESC) AS external_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== "" 또는 $this-> 페이지>$this->allpage 또는 $this->page<0 또는 $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)
}
}
/* 함수 getsql (){//SQL 문 가져오기
$this->s=preg_replace("/select/i","",$this->sql)
$this->top1=$ this->pagesize*$this- >page2
$this->sql1="SELECT TOP $this->top1 $this->s"; >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 ('/bASCb|bDESCb/i', '', $order))
}
$sql = preg_replace('/^SELECTs/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 . ' '; 'asc') !== false) ? 'DESC' : 'ASC';
$sql .= ') AS external_tbl'
if ($orderby !== false) {
$sql .= ' ORDER BY ' . $sort;
}
return $sql;
}
? ;



위 내용은 Select 문의 내용을 포함하여 PHP mssql 페이징 SQL 문 최적화의 지속적인 영향을 소개하며 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.