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

Защо редовете, връщани чрез обяснение, не са равни на count()?

Показва през колко реда е преминало, за да получите резултата.

Причината за грешните данни е, че EXPLAIN не е точен, той прави предположения за данните ви въз основа на информация, съхранявана за вашата таблица.

Това е много полезна информация, например когато правите JOINS на много таблици и искате да сте сигурни, че не преминавате през цялата обединена таблица за един ред информация за всеки ред, който имате.

Ето тест върху таблица от 608 реда.

SELECT COUNT(id) FROM table WHERE user_id = 1

Резултат:

COUNT(id)
512

И ето обяснението

EXPLAIN SELECT COUNT(id) FROM table WHERE user_id = 1

Резултат:

id  rows
1   608


  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 TRUNCATE() – съкращаване на число до определен брой десетични знаци

  3. Как да изброя таблици в MySQL и MariaDB

  4. Първо подреждане по конкретна стойност на полето

  5. Грешка, свързана с only_full_group_by при изпълнение на заявка в MySql