У меня есть представление базы данных Oracle, в котором у меня есть доступ к 17 столбцам и примерно 15 тыс. Строк (это растет со скоростью около 700 строк в год). Мне нужно использовать только 10 столбцов. На данный момент я ищу способы сделать мой запрос более эффективным, так как мое приложение загружает около 7,5 тыс. Записей в начале. Я знаю, что могу только загрузить, скажем, 1k записей, и это будет способ ускорить процесс загрузки; однако пользователям часто приходится запрашивать более чем 1k записей, загруженных изначально, и я не хочу, чтобы они дождались второй загрузки данных в приложение.
Поэтому я предполагаю, что мой главный вопрос заключается в том, что когда я запрашиваю представление Oracle, я должен запрашивать и просто делать * запрос в базе данных или выбирать определенные столбцы? Я знаю, что лучшие практики указывают только на запросы столбцов, которые вам нужны; однако, я смотрю на это с точки зрения производительности и могу ли я увидеть значительное увеличение производительности, запросив только 10 конкретных столбцов, которые мне нужны, а не * запрос на просмотр?
Как говорит @AndyLester, единственный способ узнать наверняка - попробовать и посмотреть. Есть основания ожидать, что указание фактического набора столбцов, в котором вы нуждаетесь, будет быстрее. Вопрос в том, будет ли разница "значимой", что-то, что вы только можете нам рассказать.
Есть несколько причин ожидать улучшения производительности
varchar2(10)
а столбцы, которые вам не нужны, включают некоторые varchar2(1000)
, вы можете устранить подавляющую часть вашего сетевого трафика и RAM, потребляемую на клиенте. Если вы исключаете несколько столбцов char(1)
когда вы выбираете clob
столбцов, сокращение может быть тривиальным.Поскольку для указания списка столбцов нет недостатков, я бы настоятельно рекомендовал сделать это независимо от размера улучшения производительности. Однако, если вас действительно беспокоит производительность, скорее всего, вы захотите больше взглянуть на производительность (анализируя, что на самом деле занимает время в вашем процессе, например).