私は私のクエリを改善しようとしている、私はすべてのレコードの数をやっている特定のカテゴリにあるレコードをすべて表示するには、各カテゴリでいくつのページが必要になるかを数えます。Mysqlは、私のクエリの結合とインデックスについていくつかのアドバイスが必要ですまたラウンド(カウント(フィールド)/ 20 +1)
私は、クエリの速度を向上させるために探しています。私は結合とインデックスが最も効率的であるかどうかは100%確信していません。
私は5時にLIMITを試しましたが、違いはありません。相続人は、クエリが実行されている
相続人は私のクエリ
SELECT PageBase, round((count(pads.padid)/20) + 1) as totpages FROM
categories, pads WHERE pads.catid = categories.catid AND
`RemoveMeDate` = '2001-01-01 00:00:00' group by categories.catid LIMIT 50,50
相続人は相続人
カテゴリテーブル
CREATE TABLE categories (
CatID int(11) NOT NULL DEFAULT '0',
NewASP text NOT NULL,
`Specific` text NOT NULL,
PageBase varchar(50) NOT NULL,
PRIMARY KEY (CatID),
KEY PageBase (PageBase)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
の構造を説明
通常、ページ番号はデータベースでは行われず、代わりに任意の種類のプログラミング言語を使用してアプリケーションレベルで実行します。 – ajreal
EXPLAIN出力を表示します。クエリの前にEXPLAINを追加してもう一度実行してください。 COUNT式が間違っています。 20レコード分の2ページを返します。 'round((count(pads.padid)/ 20)+ 1)'を削除し、 'padid'を置いてもクエリが速くならないように、FLOOR((count(pads.padid)+19)/ 20) – RichardTheKiwi
@ 。 – Jules