Здравствуйте.
Использую цепочку
TMSSQLConnection - TSQLQuery - TDataSetDriverEh - TMemTableEh - TDataSource - TDBGridEh
select в TSQLQuery по сути собирает справочник (данные не меняются в течении рабочего дня) из нескольких таблиц.
в where запроса передаются параметры выбранные пользователем в процессе работы на форме программы(другие гриды и строки поиска), эти параметры меняются часто, но по сути перебираются одни и теже в течении дня.
Т.е. c сервера постоянно дергаются одни и те же данные просто отфильтрованные по разному.
Вопрос, как правильно организовать кэширование данных, чтобы выборка отображалась максимально быстро.
1. Нужно использовать вышеупомянутую цепочку, делать выборку всего справочника, и дальше крутить его фильтрами?
2. Нужно ли использовать первый TMemTableEh для наполнения данными (в начале работы программы), и добавить второй TMemTableEh для отображения данных в гриде. А между ними передавать только требуемую, отфильтрованную часть строк?
В Руководстве нашел такой текст
Цитата:
Использование общих данных несколькими DataSet’ами
TMemTableEh позволяет использовать общий табличный массив записей несколькими компонентами TMemTableEh. При этом один из компонентов TMemTableEh является владельцем массива, а другие подключаются к этому массиву посредствам свойства ExternalMemData типа TCustomMemTableEh. Внешние данные видны другому компоненту TMemTableEh без учета фильтра. Свойство DataDriver может быть присвоено только у MemTable’а владельца массива. Сортировка и фильтрация в каждом DataSet’е не влияют друг на друга.
Получается в случае использования двух TMemTableEh (один с кэшем, другой для грида) нужно использовать именно такое соединение? или между ними еще можно втыкать какой-либо DataSetDriverEh?
из приведенной цитаты не понятно, в каком момент передаются и как отфильтровываются данные из TMemTableEh-кэша в TMemTableEh-грид
3.Если нужно использовать связку TMemTableEh-кэш + TMemTableEh-грид то вопрос - можно ли использовать другие методы фильтрации данных между ними например воткнуть через какой-то компонент простой sql запрос? А то строка фильтрации имеет очень капризный синтаксис, можно кучу времени убить и не получить требуемого.