2012-02-28 4 views
2

SQL 쿼리 구문 분석 방법을 알고 싶습니다. 예를 들어SQL 쿼리 구문 분석 방법

:

Select count(*) from Users where name = 'John' and age = '24' 

그것이 이름으로 레코드의 수를 취할 것인가 첫째, 다음은 나이에 따라 필터링에서 '존'? 아니면 다른 방향일까요?

+1

그것은 쿼리 파서에 달려있어 계산합니다. –

답변

1

쿼리에 대해 Explain 함수를 실행하거나 쿼리 프로파일 러를 설정하는 것이 좋습니다.

+0

엔진에 달려 있습니다. MySQL, SQLite, SQL 서버 등은 때로는 데이터베이스가 해당 테이블을 학습하는 방법 (조회 및 ​​인덱싱을 기반으로 최적화)에 따라 달라질 수 있습니다. 또한 언급할만한 가치가 있습니다. Count (*)에 대해 더 걱정해야합니다. Id는 count (1)로 변경합니다. – Luc

+0

그러나 count (*)와 count (1)는 성능 측면에서 동일하지 않습니까? – Chillax

+0

아니요. 큰 성과가 나타났습니다. 내 지식에서 잘 그 – Luc

0

선택/필터링 우선 순위 지정은 파서에 종속적이지 않고 최적화 프로그램에서 결정됩니다. 이것이 수행되는 방식은 데이터베이스 엔진, 데이터베이스 테이블에 설정된 인덱스, 데이터베이스 테이블에 대한 파티션, 다른 테이블에 대한 쿼리의 조인, 쿼리에 포함 된 선택 조건 등 여러 가지 문제에 따라 다릅니다.

Oracle에만 해당되는 경우 Jonathan Lewis의 "Cost-Based Oracle Fundamentals"가 도움이 될 수 있습니다.

0

(당신이 그렇게 할 것으로 어떤 그룹가있는 경우) 처음 위치에 따라 귀하의 기록을 모두 필터링하고 그 후 그것이