Выполнение запроса SELECT - Oracle / JDBC - PullRequest
3 голосов
/ 03 ноября 2011

У меня есть существующий запрос в системе, который представляет собой простой запрос выбора следующим образом:

SELECT <COLUMN_X>, <COLUMN_Y>, <COLUMN_Z> FROM TABLE <WHATEVER>

Со временем <WHATEVER> растет с точки зрения записей.Есть ли способ улучшить производительность здесь?Разработчик использует Statement интерфейс.Я считаю, PreparedStatement здесь не поможет, так как запрос выполняется только один раз.

Есть ли что-нибудь еще, что можно сделать?Один из столбцов является первичным ключом, а другие - VARCHAR (если информация помогает)

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Есть ли какая-либо оптимизация, которую вы можете выполнить вне настройки SQL-запроса?Если да, вот несколько предложений:

  • Попробуйте поместить таблицу в память (например, механизм хранения MEMORY в MySQL) или любую другую оптимизацию в DB
  • Кэшируйте ResultSet в java.повторять запрос только при изменении содержимого таблицы.Если в таблице есть только вставки и нет обновлений или удалений (желаемое за действительное), то вы можете использовать SELECT COUNT (*) FROM table.Если возвращенные строки отличаются от предыдущего времени, тогда запустите исходный запрос и обновите кеш только при необходимости.
2 голосов
/ 03 ноября 2011

Есть ли у вас какие-либо предикаты?Или вы всегда возвращаете все строки из таблицы?

Если вы всегда возвращаете все строки, индекс покрытия на column_x, column_y, column_z позволит Oracle просто сканировать индекс, а не выполнять сканирование таблицы.Запрос по-прежнему будет замедляться с течением времени, но индекс должен расти медленнее, чем таблица.

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

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