Оптимизация Java DB: не позволяйте пользователю выполнять дорогостоящие запросы

Оптимизация Java DB - контроль запросов
Андрей Васенин

Андрей Васенин

Автор статьи. Сфера интересов: ИТ-специалист (программирование, администрирование, DBA). Кандидат экономических наук. Подробнее .

Некоторые приложения полностью контролируют запросы, которые они выдают; запросы встроены в приложения. Другие приложения позволяют пользователям создавать запросы, заполняя поля формы. Каждый раз, когда вы позволяете пользователям создавать специальные запросы, вы рискуете, что запрос, который создаст пользователь, будет выглядеть следующим образом:

SELECT * FROM ExtremelyHugeTable
ORDER BY unIndexedColumn

В этом операторе нет предложения WHERE. Это потребует полного сканирования таблицы. Что еще хуже, Дерби придется заказывать данные. Скорее всего, пользователь не хочет просматривать все 100 000 строк, и ему все равно, все ли строки в порядке.

Делайте все возможное, чтобы избежать сканирования таблиц и сортировки больших результатов (таких как сканирование таблиц).

Некоторые вещи, которые вы можете сделать, чтобы запретить такие неуправляемые запросы:

  • Используйте проверку на стороне клиента, чтобы убедиться, что некоторые минимальные поля всегда заполнены. Удалите или запретите запросы, которые не могут использовать индексы и не поддаются оптимизации. Другими словами, принудительно используйте оптимизируемое предложение WHERE, убедившись, что столбцы, по которым строится индекс, включены в предложение WHERE запроса. Уменьшите или запретите использование предложений DISTINCT (которые часто требуют сортировки) в больших таблицах.
  • Для запросов с большими результатами не позволяйте базе данных выполнять упорядочение. Извлекайте данные порциями (предоставьте кнопку «Далее», чтобы пользователь мог получить следующую порцию, если это необходимо) и упорядочивайте данные в приложении.
  • Не используйте SELECT DISTINCT для заполнения списков; вместо этого поддерживайте отдельную таблицу уникальных предметов.

Вас заинтересует / Intresting for you:

Оптимизация Java DB: создайте ...
Оптимизация Java DB: создайте ... 497 просмотров Андрей Васенин Sat, 17 Dec 2022, 17:27:15
Оптимизация Java DB: Используй...
Оптимизация Java DB: Используй... 446 просмотров Андрей Васенин Mon, 19 Dec 2022, 09:08:50
Оптимизация Java DB: настройка...
Оптимизация Java DB: настройка... 464 просмотров Андрей Васенин Mon, 19 Dec 2022, 09:06:55
Обзор развития методов лексиче...
Обзор развития методов лексиче... 1571 просмотров Денис Fri, 10 May 2019, 07:24:54
Войдите чтобы комментировать