[解決済み] MySQLのFORCE INDEX - どこに入れればいいの?
2022-03-09 16:51:50
質問
以下のMySQLクエリがありますが、全く問題なく動作しています。ただし
FORCE INDEX
というのも、どこでこれをしなければならないのかが分からないからです。あらゆる場所を試しましたが、いつもMySQLエラーが発生します。私は何を間違えているのでしょうか?
以下は元のクエリです。
$sql_select_recent_items = $db->query("SELECT * FROM (SELECT owner_id, product_id, start_time, price, currency, name, closed, active, approved, deleted, creation_in_progress FROM db_products ORDER BY start_time DESC) as resultstable
WHERE resultstable.closed=0 AND resultstable.active=1 AND resultstable.approved=1 AND resultstable.deleted=0 AND resultstable.creation_in_progress=0
GROUP BY resultstable.owner_id
ORDER BY start_time DESC");
クエリーはこのように構成されているので、私が
ORDER BY
の前に
GROUP BY
, 念のため。
追加しなければならないのは
FORCE INDEX (products_start_time)
私は、あらゆる場所でそれを試しましたが、成功しませんでした。それは、私が見逃している何かもっと複雑なものがあるのでは?
どのように解決するのですか?
の構文は
インデックス
のヒントは、ここに書かれています。
http://dev.mysql.com/doc/refman/5.6/en/index-hints.html
FORCE INDEX
はテーブルリファレンスの直後です。
SELECT * FROM (
SELECT owner_id,
product_id,
start_time,
price,
currency,
name,
closed,
active,
approved,
deleted,
creation_in_progress
FROM db_products FORCE INDEX (products_start_time)
ORDER BY start_time DESC
) as resultstable
WHERE resultstable.closed = 0
AND resultstable.active = 1
AND resultstable.approved = 1
AND resultstable.deleted = 0
AND resultstable.creation_in_progress = 0
GROUP BY resultstable.owner_id
ORDER BY start_time DESC
警告
を使用している場合
ORDER BY
前に
GROUP BY
で最新のエントリーを取得します。
owner_id
を行うために、MySQL の非標準的で文書化されていない動作を使っていることになります。
MySQL の将来のバージョンで動作し続ける保証はありませんし、他の RDBMS ではこのクエリはエラーになる可能性が高いです。
を検索してください。 最も大きいn-per-group タグに、このタイプのクエリに対するより良い解決策が多数説明されています。
関連
-
[解決済み] SQLZOO - select from world チュートリアル #13
-
[解決済み] "sqlstate[23000]: 整合性制約違反 "を有効な制約で
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] クラスター化インデックスと非クラスター化インデックスの実際の意味は何ですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MySQLエラー1264:カラムの範囲外の値
-
[解決済み】MySQLの「ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションを再起動してみてください」を回避する方法
-
[解決済み】Fatal error: mysqldをrootで実行する方法は、マニュアルの「セキュリティ」セクションをお読みください。
-
[解決済み】SQL ZOO 各大陸とアルファベット順で1位の国名をリストアップする
-
[解決済み] MySql テーブル、エラー#1064 & エラー#1068 複数の主キーが定義されている [終了] 。
-
[解決済み] MySQLで日付のみのパラメータを使用してタイムスタンプの日付を比較する方法は?
-
[解決済み] MySQLの更新datetimeフィールド
-
[解決済み] 1行目の列 'id' に不正な整数値 '' があります。
-
[解決済み] MySQLで "no "キーワードは何に使うのですか?
-
[解決済み] エラー 2005 (hy000)。Google Cloud SQL クライアントの MySQL サーバーホスト '[35.232.51.216]' (0) が不明です。