우리는 다음과 같이 우리가 올바른 행을 업데이트하기 위해 절 "에 의해 순서"를를 사용해야하는 업데이트 쿼리가 있습니다복합 인덱스를 사용하여 MySQL에서 업데이트 쿼리를 정렬 할 수 있습니까?
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 열에 대한 정렬을 수행하는 인덱스를 사용하려면,하지만 :
색인 힌트는 (MySQL 설명서에 따라) UPDATE 쿼리에 사용되지 않습니다.
은 ORDER BY 절에 상관없이 내가 (즉
세 조회 열 (plugin_name_entry_id, plugin_name_form_id 및 ID)를 사용하여 , 또는
단지 첫 2 열 인덱스를 만드는 방법 인덱스를 무시할 것으로 보인다.와 상관없이 내가 ORDER BY 절에 포함 된 열을 쿼리 항상 인덱스를 무시합니다.
이 ORDER 절은 각 케에 전체 1 초에 추가 아주 용납 할 수없는 ry. 누구든지 색인을 사용하여 ID 또는 다른 해결 방법으로 정렬 할 수있는 방법을 알고 있습니까?
트랜잭션에서 2 개의 쿼리를 사용하지 않는 이유는 무엇입니까? –
맙소사, 우리가 사용해야 할 UPDATE FOR는 (어떤 이유로) 오랜 시간 동안 데이터베이스를 차단하게됩니다. -/ – btelles
ID에 대한 SELECT를 의미 한 다음 ID를 통한 UPDATE를 의미했습니다. –