2012-01-05 1 views
2

내 쿼리에서 나는 같은 도시의 모든 사용자를 얻고 싶습니다. 이 쿼리는 최종 사용자가 동일한 도시의 다른 사용자를 볼 수 있도록 사용할 수도 있습니다. 나는 쿼리를 실행 한 모든 사용자를 검색 할 수 있도록 사용자 테이블을 쿼리합니다. !모든 제외 조건을 SQL 쿼리에 넣거나 먼저 모든 결과를 얻은 다음 메모리에서 제외 코드를 수행합니까?

지금이 두 옵션은 다음과 같습니다 = (쿼리 실행중인 사용자의 사용자 ID)

    1. 어느 내가 user.id를 조회 할 수있는 조건을 추가하거나 표시하기 전에 쿼리 결과를 처리하고 쿼리를 실행중인 사용자를 제거합니다.

    내가 사용하는 것이 중요합니까?

    주 - 내 기본 쿼리는 동일한 도시를 찾는 것만 큼 단순하지는 않지만 표시하려는 데이터에 액세스하려면 3 테이블 조인을 사용합니다. 나는 간결함을 위해서 여기에 도시를 놓았다.

  • 답변

    1

    내 경험에 따르면, 데이터베이스 쿼리에 코드를 추가하고 데이터베이스에서 필터링을 수행하면 매개 변수가 데이터를 다시 가져 오는 결과가 발생하면 일반적으로 데이터베이스에서 이러한 것들을 실제로 사용할 수 있음을 의미합니다 더 작은 작업 세트를 내부적으로 (와이어를 통해서가 아니라) 더 나은 실행 계획을 세우는 것이 일반적으로 더 좋습니다.

    예를 들어 최근 쿼리에서 나는 누군가를 도왔습니다. 쿼리는 모든 쌍의 친구들을 반환하도록 작성되었습니다. 그러나 응용 관점에서 특정 페이지의 특정 사용자의 친구 만 필요하기 때문에 버려진 추가 데이터를 반환 할 필요가 없으며 더 작은 세트가 있기 때문에 쿼리 계획 자체가 다릅니다 십자가 조인의 한쪽에 어쨌든, 요점은 대개 가능한 한 많은 정보를 데이터베이스에 제공하고 거기에서 작동시키는 것이 더 낫다는 것입니다.

    0

    3 가지 테이블 조인 + 조건이 그리 크지 않기 때문에 첫 번째 옵션을 사용할 수 있습니다.

    0

    제공되는 정보에서 눈에 띄는 차이가 없어야합니다. 첫 번째 옵션은 데이터베이스에서 검색되는 데이터가 약간 더 적기 때문에 약간의 선호가 될 수 있습니다.

    1

    표준 답변을주는 사람은 싫지만 ...... 두 가지 옵션으로 성능 테스트를 수행하고 빠릅니다. 차이점이 결정적이지 않은 경우 향후 개발자가 쉽게 선택할 수 있습니다. 결과를 한 곳 이상에서 사용할 가능성이 높고 코드 체크인을하는 것이 아마도 사용 시점에 가장 잘 처리 될 것이기 때문에 쿼리에 넣는 것이 개발자가 더 쉽다고 추측 할 수 있습니다. 따라서 각 사용에 대한 확인을 복제하십시오.).