답변
- 의 MyISAM은 immediatelly 반환합니다.
- InnoDB는 PK 스캔을하므로 레코드 수에 따라 시간이 선형 증가합니다. 당신이 InnoDB의 테이블을 보유하고 약 레코드 수를 참조해야하는 경우
, 가장 빠른 방법은
EXPLAIN select * from student;
을 사용
(그러나 InnoDB의 통계가 잘못 될 수 있으므로 40 %의 오류도 꽤있다)이것은 일반 "SELECT COUNT (*) FROM myTable"쿼리에 해당됩니다. 그러나 시간 복잡도는 필터 또는 기타 제약 조건을 포함하는 쿼리에 따라 다릅니다. – mjv
40 %의 오류가 있습니까? 어떻게 그렇게 잘못 될 수 있습니까? 이것은 진짜 질문입니다. 저는 MySQL 사용자가 아니므로 잘 모릅니다. –
InnoDB에서 스캔 할 예상 열 수의 40 % 오류가 매우 가능합니다. 그러나 97 %의 실행 계획은 정확합니다. (인덱스 힌트가 필요할 때 다른 3 %에서 상처를 입을 수 있습니다) – noonex
그것은 모든 큐빙으로 질의에 의존한다. 또는 더 정확하게는 질의 계획 MySql은 궁극적으로 질의를 처리하도록 선택한다.
또한이 모든 O 표현에서 'n'이 의미하는 바에 따라 다릅니다. 예를 들어, 'n'이 결국 반환되는 카운트 값이고, 그 카운트가 여러 테이블을 반복적으로 스캔해야하는 쿼리에 의해 생성 된 것 인 경우, 복잡성은 선형보다 나쁠 수 있습니다.
이에 대한 대답은 복잡합니다. 관련된 테이블의 수에 따라 달라질뿐만 아니라 사용중인 스토리지 엔진에 따라 달라질 수 있습니다.
이COUNT (*) 매우 빠르게 SELECT가 하나의 테이블에서 검색하는 경우 반환하도록 최적화되어, 다른 열 가 검색되지하고 있습니다 :
은이 매뉴얼의 말씀이다, 그런 말로 미루어 보아, WHERE 절이 없습니다. 예 :
mysql> SELECT COUNT (*) FROM student; 정확한 행 개수가이 저장소 엔진 저장되고 매우 빠르게 액세스 할 수 있기 때문에
이 최적화 만 만 MyISAM 테이블에 적용됩니다. InnoDB와 같은 트랜잭션 저장소 엔진의 경우 정확한 행 수를 저장하면 더 많은 문제가 발생합니다. 여러 트랜잭션이 일 수 있으며, 각각 에 영향을 줄 수 있습니다.
내 쿼리에 where 절이 있지만 where 절의 특성이 인덱싱되었습니다. 예를 들어 큐브 또는 동일한 기술을 사용할 수 있습니까? – tavallaie
- 1. 기업 라이브러리를 사용하여 백작 (*)
- 2. HashMap의 성능과 우위
- 3. 코드 백작 : 삭제 된 행을 포함 하시겠습니까?
- 4. 두 숫자 간의 백작 차이가 계속됩니다
- 5. Hibernate many-to-many 백작 수
- 6. MySQL이 성능과 상관 쿼리를 결합합니다.
- 7. SSL : API 성능과 보안의 균형을 유지하는 방법
- 8. 어떤 솔루션을 더 나은 성능과 왜 선택해야합니까?
- 9. Stateless EJBs : 성능과 보안 사이의 균형 찾기
- 10. 더 나은 성능과 더 나은 구조
- 11. 높은 성능과 확장 성을위한 자바 웹 프레임
- 12. SQL의 여러 ID 매칭의 성능과 가입 문
- 13. 처음부터 최적의 성능과 확장 성을위한 프로그램?
- 14. 파이썬 성능과 관련하여 블로그 URL 스키마를 결정하십시오.
- 15. MySQL의 :
- 16. - MySQL의
- 17. MySQL의 -
- 18. MySQL의
- 19. MySQL의
- 20. MySQL의
- 21. /MySQL의
- 22. MySQL의
- 23. MySQL의
- 24. MySQL의
- 25. MySQL의
- 26. , MySQL의
- 27. MySQL의
- 28. MySQL의
- 29. MySQL의 :
- 30. MySQL의
무엇이 문제입니까? – Graviton