그래서 나는이 같은 쿼리가 :여러 테이블을 조인하는 쿼리에서 MySQL "주문 제한 한도"를 최적화하는 방법은 무엇입니까?
SELECT tablea.name, tablea.views from tablea inner
join tableb on (tablea.id = tableb.id and tablea.balance > 0)
order by tablea.views asc limit 1
그러나, 문제는 내가 그것을 실행하면, 그것은 아주 느린 (4+ 초)를 실행한다는 것입니다. 흥미롭게도 'order by'절을 제거하면 한계 1을 유지하면서 0.005 초 (약)로 실행됩니다. 더욱 흥미로운
: 나는, 즉 :
SELECT tablea.name, tablea.views from tablea
where tablea.balance > 0
order by tablea.views asc limit 1
쿼리는 일반적으로 0.005 초에서 실행을 TableB의 할에 가입하지 않는 경우.
주 : TABLEA에
- 열 뷰
- TABLEA 및 TableB의 인덱싱되는 ID의 관점에서 1~1의 관계를 가지며, 대략 동일한 행 양을 갖는다.
왜 첫 번째 쿼리, 'order by'가 제거 될 때 첫 번째 쿼리와 두 번째 쿼리 사이에 성능에 큰 차이가 있습니까?
어쨌든 두 테이블을 결합 할 때 정렬이 훨씬 빨라지겠습니까?
원본 결합 쿼리에서'EXPLAIN'을 (를) 실행할 수 있습니까? 실제로 거기에서 무슨 일이 일어나는지 봅시다. –
성능에 대한 질문은 모든 관련 테이블에 대한 CREATE TABLE 문과 EXPLAIN의 결과를 항상 요구합니다 – Strawberry