MySQL6 서브쿼리 2021. 5. 5. 쿼리 캐시 2021. 5. 2. count(*)와 인덱스 보통 SQL 쿼리의 SELECT 절에서의 *는 모든 컬럼을 가지고 오기 때문에 속도가 느리다고 인식한다 하지만 count(*)에서는 내부적으로 데이터를 읽지않고 행의 갯수만 훑고 지나간다.(null값 체크를 안한다.) count(컬럼)을 하는 경우에는 null값 체크를 한다. count(*), count(컬럼) 차이 MyISAM 엔진에서는 InnoDB와는 다르게 COUNT(*)에 대한 정보를 저장하고 있다. 해당 컬럼에 NULL이 있을 경우에는 풀 테이블 스캔을 한다(인덱스가 있을 경우에는 풀 인덱스 스캔) MyISAM 엔진에서의 count(*), count(컬럼) 차이 2021. 4. 9. 인덱스 사용시 주의사항 인덱스로 사용된 컬럼값 그대로 사용해야만 인덱스가 사용된다. ex) where salary * 10 > 150000;는 인덱스를 못타지만, where salary > 150000 / 10; 은 인덱스를 사용한다 AND연산자는 각 조건들이 읽어와야할 ROW수를 줄이는 역할을 하지만, or 연산자는 비교해야할 ROW가 더 늘어나기 때문에 풀 테이블 스캔이 발생할 확률이 높다. between, like, 등 범위 조건은 해당 컬럼은 인덱스를 타지만, 그 뒤 인덱스 컬럼들은 인덱스가 사용되지 않는다. 인덱스가 늘어날 수록 테이블을 갱신할 때 오버헤드가 커지고, 디스크 공간이 늘어나므로 최적의 인덱스를 찾는 것이 중요하다. PK나 FK 등 무결성 제약이 부여된 키는 기본적으로 인덱스가 같이 생성되므로 중복 생성하.. 2021. 4. 6. 이전 1 2 다음