私はすべての12カテゴリの25の項目をリストするスクリプトを書いています。データベース構造は次のようになります。最新のレコードを取得するSQL LIMIT
tbl_items
---------------------------------------------
item_id | item_name | item_value | timestamp
---------------------------------------------
tbl_categories
-----------------------------
cat_id | item_id | timestamp
-----------------------------
tbl_items
の表には約60万行あります。 6012まで6000からcat_id
ためのループ内で同じクエリを使用して
SELECT e.item_id, e.item_value
FROM tbl_items AS e
JOIN tbl_categories AS cat WHERE e.item_id = cat.item_id AND cat.cat_id = 6001
LIMIT 25
しかし、私はすべてのカテゴリの最新のレコードをしたい:私はこのSQLクエリを使用しています。私はのようなものを使用している場合:
SELECT e.item_id, e.item_value
FROM tbl_items AS e
JOIN tbl_categories AS cat WHERE e.item_id = cat.item_id AND cat.cat_id = 6001
ORDER BY e.timestamp
LIMIT 25
..theクエリは受け入れられない約10分間のコンピューティング行きます。 LIMIT
を各カテゴリの最新の25レコードに与えるのにもっとうまく使えますか?
ORDER BY
なしで誰でも達成できますか?どんなアイデアや助けも高く評価されます。
EDIT
tbl_items
+---------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------+-------+
| item_id | int(11) | NO | PRI | 0 | |
| item_name | longtext | YES | | NULL | |
| item_value | longtext | YES | | NULL | |
| timestamp | datetime | YES | | NULL | |
+---------------------+--------------+------+-----+---------+-------+
tbl_categories
+----------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+-------+
| cat_id | int(11) | NO | PRI | 0 | |
| item_id | int(11) | NO | PRI | 0 | |
| timestamp | datetime | YES | | NULL | |
+----------------+------------+------+-----+---------+-------+
テーブル作成ステートメントを表示してください。インデックスは正しいですか? –
私は質問を編集しました。 – Astha
@Astha - あなたが持っているインデックスと、新しいインデックスをリクエスト/作成できるかどうか確認できますか? – MatBailie