나는 mysql 테이블을 가지고 있고 "Deactive"상태가 아니고 총합이 0 인 행만 리턴해야한다. (그러나 상태가 비활성 상태 인 행이있을 수있다. 합계는 0이 아니며 반대의 경우도 마찬가지 임).mysql 질의 효율성
SELECT * FROM tableName WHERE uid = id AND (status != "Deactive" OR Total != 0);
이 바닥 쿼리 많이 걸리는 : 나는 위의 제약 조건을 추가하는 쿼리를 변경할 때 지금 그러나
SELECT * FROM tableName WHERE uid = id;
:이 요구 사항을 필요로하기 전에 그냥 모든 행을 선택하기 위해 표준 쿼리를하고 있었다 완료하는 데 훨씬 더 길다. 왜 이런 일이 발생하고이 쿼리를 수행 할 수있는 더 나은 방법이 있습니까?
얼마나 많은 레코드를 테이블에 있습니다 당신은 쿼리에 추가 된 필드 중 하나에 인덱스를해야합니까? – Braiba
두 번째 질의는'SELECT * FROM tableName WHERE uid = id AND (status! = "Deactive"OR Total! = 0);'이어야합니다. 또한이 필드에 색인을 추가하면 조회가 더 빨리 실행됩니다 ... –
단지 몇 천 개의 레코드가 있습니다. 그리고 테이블이 그리 크지 않기 때문에 이러한 속성에 대한 인덱스가 없습니다. – ewein