/ / Чи запити SQLite, які повертають великі набори результатів, займає більше часу? - sqlite

Чи запити SQLite, які повертають великі набори результатів, займає більше часу? - sqlite

При виконанні запиту SQLite виконується розмірповернений набір даних впливає на тривалість запиту? Давайте припустимо, що я не отримую доступу до будь-яких даних у результаті, я просто хочу знати, чи сам запит займає більше часу. Крім того, ми вважаємо, що я просто вибираю всі рядки і не мають жодних положень WHERE або ORDER BY .

Наприклад, якщо у мене є дві таблиці A і B. Скажімо, таблиця A має мільйон рядків, а таблиця В має 10 рядків, а обидві таблиці мають однакове число і типи стовпців. Вибравши всі рядки в таблиці A, потрібно більше часу, ніж вибирати всі рядки в таблиці B?

Це слід за моїм запитанням Як курсор відноситься до видалених рядків?. Я гадаю, що якщо під час запиту SQLiteробить копію даних, тоді запити, які повертають великі набори даних, можуть зайняти більше часу, за винятком випадків, коли існує оптимізація, яка копіює дані результатів запиту лише в тому випадку, якщо існує зміна даних у дБ, поки запит ще живий?

Відповіді:

0 для відповіді № 1

Залежно від деяких деталей, так, запит може займати різні періоди часу.

Приклад: у мене є таблиця з приблизно 20 тис. Записів. Я виконую пошук GLOB, який повинен пробувати кожен рядок, з LIMIT. Якщо LIMIT виконано, запит може зупинитися рано. Якщо ні, то він повинен пройти всю таблицю (або об'єднати). Тож пошуки з надто великою кількістю результатів повертаються швидше, ніж пошукові запити з лише кількома результатами.

Якщо запит повинен проходити через таку ж кількість даних, я не очікую, що існує суттєва різниця між меншою та більшою кількістю вибраних рядків. Звичайно, вартість IO, ймовірно, також буде.