Что быстрее?ORDER BY Timestamp или WHERE Timestamp = - PullRequest
1 голос
/ 21 июня 2011

Я настраиваю базу данных sqlite, которая будет отслеживать количество физических датчиков.Отдельное приложение сохраняет данные в течение нескольких месяцев ... Это приложение будет просто контролировать сбор этих данных.Я хочу убедиться, что мой запрос максимально эффективен.

Я бы хотел получить последние несколько показаний с датчиков.Будет около 20 различных типов датчиков, каждый с разным идентификатором датчика.

Это только для целей мониторинга, поэтому нет необходимости точно захватывать все данные, просто отображать последние значения.

Что из этого будет быстрее?почему?

sqlCommString = "SELECT * FROM Samples WHERE Timestamp = '" + DateTime10SecondsAgo + "'

sqlCommString = "SELECT * FROM Samples ORDER BY Timestamp DESC LIMIT 20"

1 Ответ

5 голосов
/ 21 июня 2011

Это вероятно , что первый (хотя он должен быть >=, а не =, чтобы получить последние несколько образцов) будет быстрее.

Второй должен получить все строк и затем их сортировка (хотя индекс сделает сортировку ненужной, и вы очень должны проиндексировать этот столбец для этого варианта использования), а затем выбросить некоторые из них.

Первый извлекает только те, которые необходимы.

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

Но, как и во всех оптимизациях, измеряет, не догадайтесь! Особенно с базами данных, где сам запрос только один часть уравнения производительности - состав данных также может оказать существенное влияние.

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