テーブル 1 は新しいテーブルです:
CREATE TABLE IF NOT EXISTS `book` (
`bid` int(6) unsigned NOT NULL AUTO_INCREMENT,
`siteid` smallint(2) NOT NULL DEFAULT '0'、マルチサイト ID
`catid` smallint(6) NOT NULL、列 ID
`title` char(80) NOT NULL、タイトル
`words` char(20) NOT NULL DEFAULT '0'、単語数
`content` テキスト NOT NULL、はじめに
`inputtime` int(11) NOT NULL、エントリ時間
`updatetime` int(11) NOT NULL、更新時間
`username` varchar(40) NOT NULL、ユーザー名
`author` varchar(100) NOT NULL、著者
`letter` char(5) NOT NULL、頭文字
`thumb` varchar(200) NOT NULL、サムネイル
`url` varchar(200) NOT NULL、静的アドレス
`keywords` varchar(200) NOT NULL 、キーワード
`passed` tinyint(1) NOT NULL DEFAULT '0'、シリアル化ステータス
`status` tinyint(2) NOT NULL DEFAULT '99'、レビュー
`posid` tinyint(1) NOT NULL DEFAULT '0'、推奨ID
PRIMARY KEY (`bid`),
KEY `siteid` (`siteid`,`passed`,`catid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
テーブル 2、章テーブル
CREATE TABLE IF NOT EXISTS `book_capital` (
`cid` int(8) unsigned NOT NULL AUTO_INCREMENT,
`bid` int(6) unsigned NOT NULL、書籍 ID
`listorder` int(8) NOT NULL DEFAULT '0'、sort
` title` varchar(180) NOT NULL、章タイトル
`content` text NOT NULL、章コンテンツ
`updatetime` int(11) NOT NULL、更新時間
`url` varchar(200) NOT NULL、章アドレス
主キー(`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=38065;
クエリ速度が非常に遅いので、専門家に問い合わせてください。間違っています。
public function lists($data) {
$siteid = $data['siteid'] intval($data['siteid']) ? : get_siteid();
$catid = intval($data['catid']);
$passed = $data['passed']==''?":$data['passed']; posid = intval($data['posid']);
$catidin = $data['catidin']
//エコー $data['レター']
//エコー ord($data['レター']; );
if(ord($data['letter'])>60){
$letter=$data['letter']
}
//$letter = $data['letter']==0 ?"":$data['letter'];
if(isset($data['where'])) {$sql = " and ".$data['where'];}
$thumb = intval($ data['thumb']) " AND サム != ''" : '';
if ($siteid) $where .= " `siteid`='".$siteid."'"; ==0 または $passed==1) $where .= " および `passed`='".$passed."'";
if ($posid) $where .= " および `posid`='".$ posid."'";
if ($catidin) $where .= " および catid in('".$catidin."')"
if ($catid) $where .= " および `catid`='" .$catid."'";
if ($letter) $where .= " および `letter`='".$letter."'";
$where .= ' AND `status`='99''。 $sql.$thumb;
$order = $data['order'];
return $this->db->select($where, '*', $data['limit'], $order);
}
これはクエリのラベル コードですが、ここに問題がありますか。
問題がある場合は、完全なクエリ コマンドを確認する必要があります
最初のクエリはホット コンテンツ クエリで、クリック テーブルに関連付けられたクエリ コマンドです:
select a.bid,a.title,a.author,a.content,a.updatetime,a.catid,a.url 、a. posid、b.bid,b.hits 、b.hits from book a,book_hits b where a.bid=b.bid および a.posid=2 ヒット数順に並べる desc LIMIT 1
テーブルをクリックします:
CREATE TABLE存在しない場合 `book_hits` (
`catid` int(6) NOT NULL、
`bid` int(6) unsigned NOT NULL、
`hits` int(6) NOT NULL DEFAULT '0'、
`day` int (6) DEFAULT '0'、
`week` int(6) DEFAULT '0'、
`month` int(6) DEFAULT '0'、
`updatetime` int(11) NOT NULL、
PRIMARY KEY (` bid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2 つ目は単一のテーブル クエリです: select * from book where `siteid`='1' and `posid`='1' and `catid`= '22' AND `status`='99' AND親指 != '' order by bid desclimit 0,10
ページ全体にはこれら 2 つのクエリのみが含まれています。ホームページを開くのに約 20 秒かかります。
量が多いですよね?
クエリ エンジンで、クエリ ステートメントの前に Explain を追加します
たとえば、
EXPLAIN select * from user where user='999'
詳細な説明については、これを参照してください
http://www.blogjava.net/永続化/アーカイブ/2008 +