ホームページ  >  記事  >  バックエンド開発  >  php mssql ページング 継続的な影響による SQL ステートメントの最適化_PHP チュートリアル

php mssql ページング 継続的な影響による SQL ステートメントの最適化_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:47:171071ブラウズ

コードをコピーします コードは次のとおりです:

/**
* @Filename :page.sql.class.php
* @CreatTime :2009-01-06
* @Description: このクラスは SQL ステートメント処理クラスです。
* @UpdateTime-1 :null
* @Version :jswweb1.0.0
* @Author :fkedwgwy
* @Dome :
$sql//SQL文
$allcount//総レコード数
$pagesize//ページ表示レコード数
$page//現在のページ
$sqlc= new sqlpage($sql,$allcount,$pagesize,$page);
最適化されたステートメント:
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 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->gt;allcount/$this->pagesize) //現在の 10 進数の最大の整数を取得します
if ( $this->page= ="" または $this->page>$this->allpage または $this->page$this-> ;page2=1;
} else{
$this->page2=intval($this->page);//ページ番号を番号に変換します
}
}
function gettop(){ //TOP サイズを取得サブクエリ 2 の
if ($ this->page2allpage){
$this->top2=$this->pagesize;
}else{
$this->top2=$this ->allcount-$this ->pagesize*($this->allpage-1);
}
}
/* functiongetsql(){//SQL ステートメントを取得します
$this->s=preg_replace ("/select/i", "",$this->sql);
$this->top1=$this->pagesize*$this->page2; 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->gt;sql_e;
return $this->sql_e;
}*/
functiongetsql()
$sql=$this->sql; =$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); /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 ' . ' ';
$sql .= (stripos($sort, 'asc') !== false) 'DESC' : 'ASC'; out_tbl';
if ($orderby ! == false) {
$sql .= ' $sort ' .
echo $sql; ?>






http://www.bkjia.com/PHPjc/319975.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/319975.html

技術記事
次のようにコードをコピーします。 ?php /** * @Filename :page.sql.class.php * @CreatTime :2009-01-06 * @Description : このクラスは SQL ステートメント処理クラスです。 * @UpdateTime-1 :null * @Version :jswweb1...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。