Если у вас достаточно строк, чтобы это фактически стало проблемой, и вы знаете, сколько должно быть «самых последних вставленных строк», вы можете попробовать метод округления.
Примечание: даже для довольнобольшие таблицы, это менее эффективно, но как только ваша основная таблица станет достаточно большой, я видел, как эта работа творит чудеса для производительности, ориентированной на пользователя.
Создайте «промежуточную» таблицу, которая точно имитирует структуру вашей таблицы.Всякий раз, когда вы вставляете в свой основной стол, также вставляйте в свою «промежуточную» область.Ограничьте вашу «промежуточную» область n строками, используя триггер для удаления строки идентификатора низший в таблице, когда будет достигнута новая строка сверх вашего произвольного максимума (скажем, 10000 или что-то еще)ваш лимит).
Затем запросы могут сначала попасть в эту меньшую таблицу в поисках информации.Поскольку таблица произвольно ограничена последними n строками, она просматривает только самые последние данные.Только если не удастся найти совпадение, ваш запрос (на самом деле, на данный момент хранимая процедура из-за принятия решения) попадет в вашу главную таблицу.
Некоторые ошибки:1) Убедитесь, что ваш триггер (-ы) настроен (-ы) правильно, чтобы поддерживать правильный параллелизм между вашими «основными» и «промежуточными» таблицами.2) Это может быстро стать кошмаром технического обслуживания, если не будет должным образом обработано, и в зависимости от вашего сценария это будет немного сложнее.3) Я не могу не подчеркнуть, что это эффективно / полезно только в очень специфических сценариях.Если ваш не соответствует, используйте один из ответов.