2012-10-13 4 views
4

나는이 PHP DB 라이브러리를 NotORM이라고하며, 해당 문서를 읽은 후에 조인에 관한 서적을 읽었습니다. 논쟁은 기본적으로 여러 개의 선택 쿼리를 사용한 다음 조인을 사용하는 단일 SQL 쿼리를 수행 한 다음 DB 추상화 계층에서 결과를 상호 참조하는 것입니다.NotORM의 join과 multiple select

나는 항상 단일 쿼리가 다중 쿼리를 사용하는 것보다 낫다는 것을 알고있어서 Notorm의 생각이 내게 새롭다는 것을 항상 알고있었습니다. 나는 Notorm에서만이 "feature"를 보았 기 때문에 이것도 확실하지 않습니다.

여러분의 의견을 묻고 싶습니다.

어떤 쿼리가 더 빠르고 더 빠릅니까?

이 ...

SELECT application.*, tag.* 
    FROM application 
    LEFT JOIN application_tag ON application.id = application_tag.application_id 
    LEFT JOIN tag ON application_tag.tag_id = tag.id 
    ORDER BY application.id 

대 ...

SELECT * FROM application LIMIT 4; 
SELECT * FROM application_tag WHERE application_id IN ('1', '2', '3', '4'); 
SELECT * FROM tag WHERE id IN ('21', '22', '23', '24'); 

이 두 번째 방법은 정말 실제인가?

+1

가능한 [JOIN 쿼리 대 복수 쿼리] 중복 (http://stackoverflow.com/questions/1067016/join-queries-vs-multiple-queries) – arvixx

답변

1

나는 하나의 쿼리가 약간 더 빨라질 것이라고 기대한다. 그러나 PHP와 MySQL 사이의 통신에 따라 달라집니다. 벤치마킹을 시도했을 때 질의를하기 위해 상당한 오버 헤드가있었습니다 (그러나 간단합니다).

그러나 쿼리가 너무 복잡해지면 유지 관리하기 어려운 항목이 표시됩니다.

사용자 지정 절차를 사용하려고하면 또 다른 요점이 있습니다. 예를 들어, 나는 Levenshtein 거리 (즉, 유사한 단어가 얼마나)에 기반을 둔 처리가 필요했습니다. 필자가 찾은 MySQL 함수는 PHP Levenshtein 함수를 사용하여 데이터를 검색하고 처리하는 것보다 훨씬 느린 속도였습니다.

관련 문제