Posts Mysql Count 속도
Post
Cancel

Mysql Count 속도

Mysql의 Select Count(*) 얼마나 빠를까?

사용하는 데이터베이스 엔진에 따라 다르다.

  • InnoDB : O(n)
  • MyISAM : O(1)

이유는 MyISAM의 경우 row가 몇 개 있는지 저장하고 있기에 Count(*) 쿼리가 들어오면 그 저장한 값을 바로 리턴하여 O(1)이 된다.


Count(*) vs Count(column) vs Count(*) Where

Count(*)이 가장 빠르다.

이유는 Count(*) 의 경우 내부적으로 값을 확인하지 않고, row의 개수만 확인한다.

하지만 column을 주면 내부적으로 값을 확인하여 null이 아닌 row만 리턴하기에 시간이 좀 더 걸리게 된다.

where 조건도 마찬가지다. 값을 확인한다음 조건에 맞는 것만 세기에 Count(*)보다 느리다.

이는 MyISAM 엔진에서도 마찬가지다. MyISAM 엔진에서 빠른 것은 SELECT COUNT(*)이고 Count(column)이나 Count(*) Where 은 InnoDB와 마찬가지로 값을 읽고 리턴하기에 시간이 오래 걸린다.


정리

 MyISAMInnoDB
Count(*)빠름보통
Count(col)느림느림
Count(*) Where느림느림

절대적으로 빠름, 느림을 의미하는게 아닌 상대적인 속도를 의미.


출처

https://stackoverflow.com/questions/5257973/mysql-complexity-of-select-count-from-mytable

https://m.blog.naver.com/pjt3591oo/221030483713

https://stackoverflow.com/questions/22352073/improve-innodb-count-performance

https://imnkj.tistory.com/49

This post is licensed under CC BY 4.0 by the author.

리액트 리팩토링

Open Graph(OG) 프로토콜

Comments powered by Disqus.