-1

以下のクエリは、各モデルと関連する写真撮影を照合し、写真撮影の最初の画像を投稿のデフォルト画像として 10 件の投稿をエコーアウトします。正常に動作しますが、非常に遅いようです。望ましい結果を達成するためのより速い方法はありますか?

"SELECT * "
. "FROM models a "
. "INNER JOIN models_images b ON a.model_id = b.model_id "
. "WHERE 1 AND `images_ok` = '1'"       
. "GROUP BY a.model_id ORDER BY a.id DESC "     
. "LIMIT 10"

ありがとう

4

2 に答える 2

4

model_id両方のテーブルのおよびimages_okフィールドにインデックスを追加できます。

このような:

--           table name         new index name     field name
ALTER TABLE `models` ADD INDEX `models_model_id` (`model_id`);

データベース インデックスに関するウィキペディア:

データベース インデックスは、データベース テーブルでのデータ取得操作の速度を向上させるデータ構造ですが、書き込みが遅くなり、より多くのストレージ領域が使用されます。インデックスは、データベース テーブルの 1 つまたは複数の列を使用して作成でき、迅速なランダム ルックアップと順序付けられたレコードへの効率的なアクセスの両方の基礎を提供します。

インデックスを理解するのに役立つ良いビデオ:

インデックスの理解 (YouTube の Solabletech による)

于 2013-07-01T04:26:08.030 に答える
0

このソリューションには、mysql の機能「インデックス」を使用できます。インデックスの詳細な説明については、mysql のマニュアルを参照してください。

Mysql 開発者チュートリアルを見る

または

W3choolsを見る

于 2013-07-01T05:11:24.470 に答える