-
имеется таблица в 3000 записей
create table Docs
(
UID INT -- ID записи
Object IMAGE -- документ word
SH IMAGE -- скриншот документа
Misc VARCHAR(1024) -- коментарий
)
Задача - отобразить список документов и их скриншоты, а также иметь возможность открытия документов используемый в приложении запрос
SELECT UID, Object, SH, Comment
FROM Docs
выполняется более 3 мин, а такой запрос
SELECT UID, Comment
FROM Docs
выполняется менее 1 сек. Вопрос: Как оптимизировать выборку данных BLOB на клиент ? Неужели придется по событию onAfterScroll постоянно выгружать из БД 1 документ по его ID? Какая техника работы в этой ситуации? Установку индекса на поля Object и SH не предлагать (собственно и нельзя) Нашел 1 способ "убыстрения" выборки - установить серверный курсор в TADOConnection, но это не есть хорошо, поскольку такой курсор отбирает ресурсы сервера, да и набор даннных невелик.
-
> Amir (15.08.2012 16:24:00) [0]
Не надо onAfterScroll, достаточно например загружать по двойному щелчку для просмотра и редактирования. То есть совсем не загружать Object и возможно SH пока он не нужен, то есть второй вариант ззапроса
-
> [0] Amir (15.08.12 16:24) > Установку индекса на поля Object и SH не предлагать (собственно и нельзя)
Собственно он и не помог бы ничем.
-
Зачам на клменте все скриншоты сразу? Загружай по мере необходимости, как сказали.
-
> > Inovet © (15.08.12 16:43) [3] > > Зачам на клменте все скриншоты сразу? Загружай по мере необходимости, > как сказали.
Но база то на сервере - когда 1 узер загрузил рекордсет на клиент и пытается считать данные по двойному клику данные рекорсета могут быть неактуальны - другие узеры могут удалить эту запись
-
> Amir (15.08.12 16:55) [4]
А лучше будет, если он узнает об этом после просмотра превьюшки?
-
> [4] Amir (15.08.12 16:55) > данные рекорсета могут быть неактуальны
На то есть транзакции. А по такой логике толку на клиенте от удалённой записи?
-
> Inovet © (15.08.12 17:04) [6] > На то есть транзакции. А по такой логике толку на клиенте > от удалённой записи?
Я предполагал загрузить всю информацию из таблицы на клиент и работать с ней до того, как узер нажмет кнопку "перечитать БД"
-
> [7] Amir (15.08.12 17:12) > предполагал загрузить всю информацию из таблицы на клиент
Это неправильный подход. Загружать надо только то, что надо. У тебя юзер сразу все 3000 скриншотов будет смотреть? Память не треснет?
-
а вот зачем вордовому документу скриншот? типа посмотреть картинку со словами из первой страницы? а не проще ли иметь не картинку слов, а сами слова? объем меньше, и возможность поиска появляется.
нахрена там скриншот? что именно делает(должен делать) юзер, когда видит скриншот? оценивает красоту гарнитуры и верстки, или он семантику курит?
-
> Inovet © (15.08.12 17:46) [8] > Это неправильный подход. Загружать надо только то, что надо.
А отображение в гриде одних реквизитов записи, а по двойному клику как сказано в [1], в случае если другой юзер изменил данные поля object, sh и (или) остальные реквизиты - отбражение других реквизитов - разве это правильный подход?
-
> [10] Amir (16.08.12 10:52) > - разве это правильный подход?
Я же тебе уже сказал про транзакции, настрайвай так, как надо. А в твоём подходе смысла нет, вот отредактировал юзер запись или открыть захочет, а её кто-то удалил. И так постоянно, а ты ему, - Это я такой подход придумал, нравится?. Юзер тебя будет долго вспоминать, возможно ногами.
-
> Inovet (16.08.2012 12:06:11) [11]
В редактирование, кто последний тот и прав.
-
> а по двойному клику как сказано в [1], в случае если другой > юзер изменил данные поля object, sh и (или) остальные реквизиты > - отбражение других > реквизитов > - разве это правильный подход?
Ты пришёл в библиотеку. И сказал им: дайте мне каталог литературы. Унёс его домой. Сидел там с ним, думал, плевал в потолок. И наконец выбрал себе "Марсельские тайны" расового французского писателя Эмиля Золя. Приходишь в библиотеку и говоришь - хочу вот это вот. А тебе там: во-первых, этой книги уже нет, её Розыч забрал почитать. А во-вторых, мы старую уже вообще сожгли, а эта нового издания. Адаптированная, в комиксах. И вот ты думаешь: нафига я мучился с огромным каталогом, пёр его домой из библиотеки (5 км зимой, хоть и под гору) в авоське, а потом просматривал его, если инфа уже устарела?
-
>(5 км зимой, хоть и под гору)
А назад-то было очень даже в гору, хоть и летом :)
|