2015-10-05 3 views
0

I выход план запроса на SQLite, и это показываетКакое число в плане запросов SQLite означает?

0|0|0|SCAN TABLE t (~500000 rows) 

Интересно, что смысл числа (500000)? Я предполагаю, что это длина таблицы, но я выполнил запрос на маленькой таблице, в которой не так много строк.

Есть ли официальный документ о значении номера? Благодарю.

+0

Не достаточно [официальной документации] (https://www.sqlite.org/eqp.html) достаточно ясно? Добавьте запрос, который вы выполняете здесь. – fpietka

+0

@fpietka Нет, не понятно. Веб-страница имеет «Пример выше показывает, что SQLite оценивает, что сканирование полного стола посещает приблизительно 100 000 записей». но нет никакого примера выше, чтобы сказать что-нибудь о количестве 100 000. Важно отметить, что я хочу знать, как получается 100 000, почему он не совпадает с реальной длиной таблицы. – user2215427

+0

Что такое запрос? также какова ваша структура таблицы? – fpietka

ответ

2

Поскольку official documentation говорит, что это количество строк, которые будут получены в базе данных .

Если есть указатель на столбце с сохранением, а если вы запустили ANALYZE, то SQLite может сделать оценку на основе фактических данных. В противном случае предполагается, что таблицы содержат миллион строк, а поиск, подобный column > x, отфильтровывает половину строк.

+0

Действительно, я выполнил ANALYZE перед EXPLAIN QUERY PLAN. Тем не менее, номер строки (500000), очевидно, слишком много больше фактического номера строки (около 20). Интересно, как оценивается план запроса? Благодарю. @CL. – user2215427

+0

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

Смежные вопросы