ホームページ > バックエンド開発 > PHPチュートリアル > Modoer リスト ページのパフォーマンス分析と最適化_PHP チュートリアル

Modoer リスト ページのパフォーマンス分析と最適化_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:17:22
オリジナル
910 人が閲覧しました

ページhttp://www.modoer.org/beijing/item/list-8では、次の2つのSQLが実行されます

SELECT s.sid,pid,catid,domain,name, avgsort,sort1,sort2,sort3,sort4,sort5,sort6,sort7,sort8,best,finer,pageviews,reviews,pictures,favorites,thumb,aid,map_lat,map_lng,c_tel,c_dz FROM modoer_subject s LEFT JOIN modoer_subject_shishang sf ON ( s.sid = sf.sid) WHERE が存在します(SELECT 1 FROM modoer_subjectatt st WHERE s.sid=st.sid AND attid=173) AND が存在します(SELECT 1 FROM modoer_subjectatt st WHERE s.sid=st.sid AND attid=4) ORDER BY 詳細な DESC LIMIT 0, 20



SELECT COUNT(*) FROM modoer_subject s WHERE 存在する(SELECT 1 FROM modoer_subjectatt st WHERE s.sid=st.sid AND attid=173) AND 存在する(SELECT 1 FROM modoer_subjectatt st WHERE s.sid=st.sid AND attid=4)

データ量が大きくない場合でも、データ量が多い場合はどうなるでしょうか。私のデータを例にとると、件名データ ボリュームと件名データ ボリュームはそれぞれ、図に示すように



SQL 実行結果になります。

データ ボリュームに対する SQL クエリを 1 回実行するだけで、44.16 秒かかりました。ウェブサイトが完全にダウンしていて開かない場合は、テクノロジーがテストされていない、または最適化されていないのではありませんか?複合文は使うのは楽しいですが、効果は非常に貧弱です

私が一時的に最適化した後、subject_class.php の次のコードを変更したところ、パフォーマンスが大幅に向上しました
if($atts) {
$ attlist = array_values($atts) ; $or = '';
$sql ='select GROUP_CONCAT(sid) sids from( O SELECT COUNT (SID) Count, Sid from (
Modoer_Subjectatt から SID、Attid を選択しますWhere ';
Foreach ($ Attlist as $ Attid) {
// $ this- & gt; where_exist("SELECT 1 FROM dbpre_subjectatt st WHERE s.sid=st.sid AND = $attid");

$ OR = 'OR';
}
$ SQL. = ') SID でグループ化
ここで、カウント ='
sids'];
//$where = ' s.sid in('.$sids.') ';

$this->db->where('s.sid',explode(',', $sids), '');
}else{
$where = '';
}

さらに蟥询数のある地方
if($atts) {
$attlist = array_values($atts);
$num = count($attlist) );
if($num> ;0){
$or = '';
$sql ='select count(*) as nums from(
) select count(sid) count from (
select sid,attid from modoer_subjectatt where ';
foreach($attlist as $attid) {
//$this->db ->where_exist("dbpre_subjectatt st WHERE s.sid=st.sid AND attid=$attid から 1 を選択" );
if($attid
l .= $or . ' attid='.$attid;
$or = ' or ';
}
$ sql .= ') as temp
sid でグループ化) as temp1
where count='.$num;
}
}


希望される友友変更可、也問題のある連絡システムqq 272164179

が残っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/626609.html技術記事 http://www.modoer.org/beijing/item/list-8 のページで、以下の 2 つの SQL SELECT s.sid,pid,catid,domain,name,avgsort,sort1,sort2,sort3,sort4 を実行します。 、ソート5、ソート6、ソート7、ソート8、最高、...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート