FORCE INDEX (abc) 키워드를 사용하여 MySQL이 쿼리를 실행하는 방식을 변경할 수 있음을 알고 있습니다. 그러나 실행 명령을 변경하는 방법이 있습니까? 내 쿼리는 다음과 같습니다 SELECT c.*
FROM table1 a
INNER JOIN table2 b ON a.id = b.table1_id
INNER JOIN table3 c ON
이것은 내가 찾고있는 쿼리 중 하나에 대한 MySQL의 계획을 설명합니다. 세트 +----+-------------+--------+-------+---------------+---------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key |
다음 쿼리를 고려하십시오. select * from contact where firstname like '%some%'
select * from
(select * from contact) as t1
where firstname like '%some%'
두 쿼리의 실행 계획은 동일하며 동시에 실행됩니다. 하지만 두 번째 쿼리가 다른 계획을
2 개의 외래 키가있는 테이블이 있는데, fk1과 fk2를 호출 할 수 있습니다. 둘 다 동일한 유형과 동일한 색인을 가지고 있습니다. 그러나 간단한 선택 쿼리를 "설명"하면 쿼리 계획이 완전히 달라집니다. fk2를 들어 Index Scan using fk1_idx on mytable (cost=0.00..9.32 rows=2 width=4)
In
SQL 전문가에게 질문이 있습니다. 거의 동일한 구조의 테이블이 두 개 있습니다. 저장 프로 시저에 전달 된 매개 변수에 따라 하나 또는 다른 테이블에서 데이터를 수집해야합니다. 가장 좋은 방법은? 이러한 테이블을 하나의 테이블로 결합하는 것은 바람직하지 않습니다. 나는 (MS SQL 서버 2008) 다음 그것을했다 : Select *
FROM
누군가가이 기능이 작동하는 이유를 설명해주십시오. 다음은 풍경입니다. 저장 프로 시저가 있는데 느리게 실행되기 시작합니다. 그런 다음 매개 변수를 선택하고 해당 값을 저장하기 위해 변수를 선언하고 proc에서는 매개 변수 대신 선언 된 변수를 사용합니다. proc은 상당히 빠르게 진행될 것입니다. 캐시 된 계획 및 통계와 관련이 있다고 생각하지만 확실하지