Почему строки, возвращаемые «объяснением», не равны count ()?

В C ++ (но не в обычном C) вполне правомерно печатать тип дважды, если оба определения полностью идентичны:

// foo.h
struct A{};
typedef A *PA;

// bar.h
struct A;  // forward declare A
typedef A *PA;
void func(PA x);

// baz.cc
#include "bar.h"
#include "foo.h"
// We've now included the definition for PA twice, but it's ok since they're the same
...
A x;
func(&x);
10
задан ZA. 24 June 2009 в 10:21
поделиться

2 ответа

Показывает, сколько строк было обработано для получения результата.

Причина неверных данных в том, что 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
13
ответ дан 3 December 2019 в 17:21
поделиться

Запрос EXPLAIN будет использовать значение, указанное в таблице INFORMATION_SCHEMA , которая содержит приблизительную оценку количества строк для таблиц innodb - см. Примечания раздел в документации mysql в INFORMATION_SCHEMA.TABLES .

6
ответ дан 3 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: