我们有一个更新查询,它需要使用“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 文档)。
无论我如何创建索引(即
使用所有三个查询的列(plugin_name_entry_id、plugin_name_form_id 和 id)或
仅使用前 2 列),ORDER BY 子句似乎都忽略了索引。并且无论我在 ORDER BY 子句中包含哪些列,查询总是忽略索引。
这个 ORDER 子句为每个查询增加了整整 1 秒,这是非常不可接受的。任何人都知道我如何使用索引按 ID 或其他解决方法排序?