次のように、正しい行を確実に更新するために「order by」句を使用する必要がある更新クエリがあります。
UPDATE `plugin_name_codes`
USE|FORCE INDEX abc
SET `plugin_name_entry_id` = 2
WHERE `plugin_name_codes`.`plugin_name_form_id` = 3
AND (plugin_name_entry_id IS NULL)
ORDER BY /*plugin_name_form_id asc, plugin_name_entry_id asc,*/ id ASC
LIMIT 1
インデックスを使用して ID 列の並べ替えを行いたいのですが、次のようになります。
インデックス ヒントは UPDATE クエリでは使用されません (MySQL のドキュメントによると)。
ORDER BY 句は、インデックスをどのように作成しても (つまり
、クエリ対象の 3 つの列 (plugin_name_entry_id、plugin_name_form_id、および id) すべてを使用するか、または
最初の 2 つの列のみを使用して)、インデックスを無視するように見えます。ORDER BY 句にどの列を含めても、クエリは常にインデックスを無視します。
この ORDER 句により、各クエリに完全に 1 秒が追加されますが、これは非常に受け入れられません。インデックスを使用して ID で並べ替える方法、またはその他の回避策を知っている人はいますか?