Mysql
 sql >> база данни >  >> RDS >> Mysql

производителност на броене на mysql

разгледайте следните публикации в блога:

1) COUNT(***) срещу COUNT(col)
2) Съвети за лесна производителност на MySQL
3) Бързо броене(*) за InnoDB

btw, кой двигател използваш?

РЕДАКТИРАНО: Относно техниката за ускоряване на броенето, когато трябва просто да знаете дали има известно количество редове. Съжалявам, просто сгреших със запитването ми. Така че, когато просто трябва да знаете дали има напр. 300 реда по конкретно условие можете да опитате подзаявка:

select count(*) FROM
( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result

първо минимизирате набора от резултати и след това преброите резултата; той все още ще сканира набора от резултати, но можете да го ограничите (за пореден път работи, когато въпросът към DB е „тук е повече или по-малко от 300 реда) и ако DB съдържа повече от 300 реда, които отговарят на условието, че заявката е по-бърза

Резултати от тестване (моята таблица има 6,7 милиона реда):

1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
връща 4,2 милиона за 65,4 секунди

2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
връща 100 за 0,03 секунди

По-долу е резултат от заявката за обяснение, за да видите какво се случва там:

EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на данни в MySQL база данни

  2. mysql заявка, за да изберете всичко освен

  3. DATABASE() – Вземете текущото име на базата данни в MySQL

  4. как да стартирате Mysql в git bash в Windows 8.1

  5. MySQL DATETIME DIFF заявка