2014-09-18 2 views
-1

У меня возникла проблема с sql-запросом для моей базы данных. Я хочу получить последние n-записи конкретной таблицы. Обычно я выполнял следующий запрос: «Выберите Top 1000 (*) FROM Table ORDER BY Column DESC ', но проблема в том, что таблица содержит много данных и всегда заканчивается таймаутом из-за процесса заказа и даже если тайм-аут не произойдет, я просто не могу терпеть задержку в моем приложении.SQL - Получить последние записи без 'заказа по'

Так что я ищу способ получить последние записи без переупорядочения таблицы! Я просто предаюсь желаемому за действительное, или есть способ сделать это?

+1

Что значит «последние записи»? – DonCallisto

+1

- Ваша колонка заказа указана? – epoch

+1

Добавили ли вы индекс в колонку? что должно ускорить запрос. – lijat

ответ

4

Невозможно это сделать. Реляционные базы данных не обязаны хранить свои строки в определенном порядке ... Таким образом, нет способа узнать, какая строка физически хранится последней. Вам нужно будет использовать ORDER BY. Извините, что ...

Возможно, вы сможете улучшить производительность с помощью некоторых соответствующих индексов. Этот показатель должен быть довольно быстрым с индексом.

+0

+1 Согласен. Если база данных не в состоянии возвратить ее набор данных разумным образом, обычно есть что-то ужасное. – tvm

+0

Спасибо за быстрые ответы! – user3887184

0

У меня были проблемы с поиском в поле MESSAGE огромного журнала журналов log4net.

К счастью, таблица LOG имеет поле timestamp, поэтому я смог ускорить запрос, добавив дополнительные условия фильтра и индексы.

SELECT top 1000 * FROM table WHERE time_stamp >= today 

or 

SELECT top 1000 * FROM table WHERE id > first_id_today 

Дополнительно: избегайте использования (*), особенно если у вас есть поля бинари в вашем столе!

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