나는 정기적으로 쿼리 SELECT * from table WHERE somefield = 20
을 수행하는 테이블 (잠재적으로 커질 수 있으며 수백만 개의 행이 커질 수 있음)을 가지고 있으며이 쿼리를 빠르게 실행하고 싶습니다. 언제든지이 쿼리는 다른 값에 대한 보장이없는 특정 값 20에 대해 최대 10 개의 행을 반환 할 것으로 기대합니다. 이것을 색인화하는 적절한 방법은 무엇입니까? 일부 필드에 색인을 작성하고 통계가 대략 최신인지 확인하는 것으로 충분합니까? 아니면 이것을 최적화 할 수있는 다른 트릭이 있습니까?특정 조회에 대해 최적화 된 인덱스
답변
분리에서이 쿼리 위한 이상적인 인덱스 키 열 somefield
와 인덱스 될 테이블에있는 다른 모든 컬럼의 열을 포함 할 (중 클러스터 된 인덱스 또는 INCLUDE
옵션으로 NCI을함으로써).
이렇게하면 값을 직접 찾아보고 책갈피 조회가 필요하지 않게됩니다.
그러나 데이터 수정 작업에 영향을 미치는 모든 포괄 열이있는 NCI의 유지 관리 오버 헤드 당신은 CI를 선호하는 것은 그 이유를 당신을 위해 이렇게 분열에게 어쨌든
를 다른 쿼리 혜택을하거나 피하기 위해 다른 키 열을 정의 할 수 somefield
에만 NCI를 정의하고 10 개의 북마크 조회를 사용하는 것이 좋습니다. 그것은 균형 잡힌 행동입니다.
편집. 실제로 인 경우 과 같은 값으로 filtered index을 만들면 쿼리 최적화에 관심이있는 사람은입니다. 그러면 해당 인덱스 정의의 모든 열 include
것 같습니다.
필터링 된 인덱스를 이동하는 것이 합리적 소리 dba.stackexchange.com로 이동하는 투표를했습니다 – Martijn
인덱스를 일부 필드에두면 충분하며 통계가 대략 최신인지 확인하십시오.
네, 아주 간단합니다. somefield가 올바른 타입인지 확인하십시오 (즉 int). somefield가 텍스트를 포함 할 필요가 있다면 더 할 수 있지만 그렇지 않으면 정상적인 인덱스가 좋을 것입니다.
당신은 작은 증가를 얻을 수있다 (그리고 나는 작은 뜻) 당신이 (당신이 이미 그것이 무엇인지 당신이, 아마도, somefield 필요가 없습니다) SELECT *
를 사용하지 의해 반환 된 모든 필드가 필요하지 않은 경우.
예, 일부 필드에 색인을 추가하려고합니다.
다른 쿼리를 수행하지 않는 경우 클러스터 된 인덱스로 만들 수 있지만 컨텍스트가 없으면 결론적으로 말하기 어렵습니다.
- 1. 테이블의 조회에 대해 혼동했습니다.
- 2. MS 액세스 : 인덱스 최적화
- 3. MySQL의 커버링 인덱스 최적화
- 4. MySQL 테이블 인덱스 최적화
- 5. 안드로이드 SQLite 인덱스 최적화
- 6. MySQL의 쿼리 최적화 - 인덱스
- 7. 직사각형 항목에 대해 최적화 된 격자
- 8. 포함 된 형식이없는 인덱스 특정 형식
- 9. HQL 쿼리 최적화 - 인덱스 된 ID 또는 전체 개체를 반환합니다.
- 10. 조회에 개체 추가
- 11. SELECT- 쿼리 - 인덱스 사용 등 최적화
- 12. 특정 인덱스 만들기
- 13. 이 테이블에 대해 인덱스/최적화를 작성하는 방법
- 14. 쿼리 최적화 프로그램이 인덱스 검색보다 인덱스 스캔을 선호합니다.
- 15. MySQL - 인덱스 최적화 - 게임 관련 사용자
- 16. Koenig 조회에 대한 이론적 근거
- 17. 로켈 특정 인덱스 문자
- 18. 부속 조회에 별명 사용
- 19. SELECT INTO OUTFILE에 대해 최적화
- 20. 인덱스 열을 추가하여 SQL 데이터베이스 최적화
- 21. SQL 테이블 최적화 : 기본 및 보조 인덱스
- 22. SQL 다 대다 쿼리 인덱스 최적화
- 23. 특정 값에 대한 인덱스 생성
- 24. C++ 이름 조회에 대한 설명
- 25. 특정 항목의 BindingSource 인덱스 찾기
- 26. 클러스터 된 인덱스
- 27. 이 rand 생성기에 대해 좀 더 최적화 된 솔루션 제안
- 28. 이 세 테이블에 대해 가장 최적화 된 MySQL 쿼리는 무엇입니까?
- 29. 세 가지 최적화 기법에 대해 혼동 스럽습니다
- 30. sqlalchemy : 부속 조회에 필터가있는 subqueryload
나는 내가 찾던 정확히 보인다,이 – cjk
이 – Martijn