Как ускорить присоединение моего запроса linq к таблице с большим количеством данных - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть приложение, использующее показания GPS.Таблица, которая хранит показания GPS, отправленные через 10 секунд, становится все больше и больше с более чем 2 миллионами записей.У меня также есть другая таблица с не более чем 200 записями.Я соединяю эти две таблицы, чтобы получить самые последние показания GPS, и это занимает некоторое время, и, поскольку мое веб-приложение отправляет запрос каждые 30 секунд, оно фактически обескураживает скоростью запроса.Кто-нибудь, кто знает, как я могу ускорить мой запрос?

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

LinqToSQL в любом случае преобразуется в SQL, поэтому вам действительно необходимо оптимизировать производительность запроса к базе данных.

  • Проверьте свой запрос в анализаторе запросов и посмотрите, что вы можете оптимизировать.
  • Добавитьindexes.
  • Если возможно, опубликуйте запрос для просмотра где-нибудь.
0 голосов
/ 09 февраля 2012

Как говорит Хасан Хан; оптимизировать схему БД.

Кроме того, если вам нужны только самые последние показания, как насчет создания другой таблицы, которая содержит только последние n часов / дней данных? Эта таблица затеняет другую в том смысле, что вы вставляете одни и те же данные с одним и тем же ПК, удаляя «устаревшие» строки при каждой вставке. Один из способов сделать это - сохранить указанную таблицу из триггера OnInsert в таблице, содержащей все данные, или, если вы используете SP для вставки в таблицу «все данные», сделайте это там.

Главное это; сделайте небольшой удар по производительности вставки, чтобы значительно увеличить выбор.

0 голосов
/ 09 февраля 2012

В типичном приложении GPS это какая-то проблема, с которой столкнется каждый :) Некоторые из вариантов для вас.

  • Как правило, запрос в отчете об автомобиле gps будет основан на вашемидентификатор устройства и дата и время.Поэтому попробуйте создать индекс для этих полей
  • Если у вас есть таблица с геопространственными данными, создайте пространственные индексы
  • Попробуйте использовать разбиение таблицы для данных о положении транспортного средства.
  • Также попробуйте небольшую денормализацию для самых больших таблиц, чтобы уменьшить нагрузку на запросы

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

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