Какой самый быстрый Win32 или SQL-запрос? - PullRequest
6 голосов
/ 07 октября 2010

Я пишу клиент-серверное приложение win32 в Delphi 7, и в разделе мне нужно принести aprox.100 000 (меньше или больше) строк с данными из базы данных Oracle.Пока все хорошо, но одно из полей должно быть вычислено (простое деление с большим числом).

Мой вопрос: как меньше ресурсов и оптимальнее сделать деление в запросе SQL (может быть, процедура хранения) или для вычисления значения в коде для этого поля (на стороне сервера)?Я не хочу использовать TDataset с вычисляемыми полями.

Система Oracle (v 9.2) также используется другими приложениями, предназначена не только для этого приложения.

Заранее спасибо.

Ответы [ 4 ]

8 голосов
/ 07 октября 2010

Механизмы SQL предназначены для задач такого типа, поэтому ответом является make the operation in the oracle system.

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

7 голосов
/ 07 октября 2010

При такой скалярной операции разница в производительности будет тривиальной.Делайте то, что семантически разумнее или удобнее.

5 голосов
/ 07 октября 2010

как меньше ресурсов и оптимально сделать разделение в запросе SQL (может быть, в процедуре хранения) или вычислить значение в коде для этого поля (на стороне сервера)?

Не должно иметь значения.Большая часть времени будет потрачена на вычисление и передачу 100 000 строк.

4 голосов
/ 07 октября 2010

Если производительность одинакова, я бы сделал это там, где это было бы наиболее удобно для обслуживания / конфигурации.Если для базы данных требуется специальное окно обслуживания (например, в субботу в полночь) для изменений метаданных, я бы выбрал решение клиентского или среднего уровня вместо хранимой процедуры.

...