Порядок вставки SQLite против порядка запроса? - PullRequest
8 голосов
/ 15 апреля 2011

Будет ли порядок строк, возвращаемых запросом, совпадать с порядком, в котором строки были вставлены в таблицу базы данных SQLite?

Если да, то соответствует ли это поведение?

Если нет, может ли это быть выполнено?

У меня есть требование хранить около 500 строк данных, и время от времени требуется сортировка / упорядочение.Данные в правильном порядке перед вставкой.

Ответы [ 3 ]

10 голосов
/ 08 ноября 2011

Учитывая небольшое количество строк в вашей таблице, это, вероятно, то, что вам нужно:

SELECT * FROM yourtable ORDER BY ROWID

Для получения дополнительной информации о ROWID см. Эти две ссылки: Автоинкремент SQLite и ROWID и INTEGER PRIMARY KEY

6 голосов
/ 15 апреля 2011

Даже если заказ может быть согласован в одном сценарии, нет никаких гарантий.

Именно поэтому в SQL есть оператор ORDER BY:

SELECT foo,bar FROM Table FOO WHERE frobnitz LIKE 'foo%' ORDER BY baz ASC;
3 голосов
/ 21 апреля 2011

Будет ли порядок строк, возвращаемых запросом, совпадать с порядком, в котором строки были вставлены в таблицу базы данных SQLite?

Нет, вы можете 'не могу рассчитывать на это.Все оптимизаторы запросов имеют большую свободу, когда дело касается ускорения запросов.Одна вещь, которую они могут сделать, это возвращать строки в любом порядке, который является самым быстрым.Это верно, даже если конкретная база данных поддерживает кластерные индексы.(Кластерный индекс налагает физический порядок на строки.)

Существует только один способ гарантировать порядок возвращаемых строк в базе данных SQL: используйте предложение ORDER BY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...