MySQL의 Force Index - 어디에 배치해야 합니까?
완벽하게 작동하는 다음 MySQL 쿼리가 있습니다.단, I doespair에 추가할 필요가 있는 것은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개 태그를 검색하십시오.
FORCE INDEX
는 MySQL 8 이후 폐지됩니다.
그러므로, 당신은 예상해야 한다.
USE INDEX
,FORCE INDEX
,그리고.IGNORE INDEX
향후 MySQL 릴리즈에서 폐지될 예정이며 이후 완전히 삭제될 예정입니다.
사용하셔야 합니다.JOIN_INDEX
,GROUP_INDEX
,ORDER_INDEX
,그리고.INDEX
대신 v8용입니다.
이 문서에서는, 이러한 문서에는 미묘한 의미가 있기 때문에, 지금까지의 기능에 비해, 옵티마이저에게 전하는 내용을 보다 세세하게 제어할 수 있습니다.문서에서 자세한 내용을 읽을 수 있지만 "force index"와 동등한 내용만 필요한 경우 SELECT 직후에 테이블과 인덱스를 특별한 코멘트로 지정하여 읽을 수 있습니다.
SELECT /*+ index(table_name index_name) */ col1, col2 FROM table_name;
언급URL : https://stackoverflow.com/questions/19061873/force-index-in-mysql-where-do-i-put-it
'programing' 카테고리의 다른 글
Python에서 새 사전 만들기 (0) | 2022.11.26 |
---|---|
moteJs 날짜 문자열에 5일 추가 (0) | 2022.11.26 |
spring restTemplate를 사용한 REST API 기본 인증 (0) | 2022.11.26 |
Java에서 Selenium WebDriver를 사용하여 새 탭을 여는 방법 (0) | 2022.11.26 |
새 창에서 열린 하위 구성 요소 (0) | 2022.11.26 |