Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Возникла такая проблема Программка на VFP6 работает с БД на dbfах. В формочке для редактирования данных есть грид, для просмотра и редактирования выборок ставится фильтр. Вообщем-то все работает, но в табличке 600 тыс записей и, после установки фильтра и просмотра данных в гриде (особенно если прокруткой грида пользуешься) программа просто виснет намертво. Подскажите, пожалуйста, как с этим бороться ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 10:52 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Я бы на вашем месте выбрал всё в курсор и присоеденил к гриду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:09 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
leafЯ бы на вашем месте выбрал всё в курсор и присоеденил к гриду А как тогда редактировать данные? Вообще-то, пробовали уже через View, но пользователей не устраивает время открытия формы - с Viewшкой открывается больше минут :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:15 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
однозначно при таком количестке записей нужно пользоваться SELECT INTO CURSOR - будет гораздо быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:21 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Alex Sheffоднозначно при таком количестке записей нужно пользоваться SELECT INTO CURSOR - будет гораздо быстрее Это вместо фильтра ? или вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:26 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
вместо фильтра. Код: plaintext 1. 2. А исправлять, выбираеш запись в курсоре (надеють там есть какой-то кот уникальный), затем что-то типа Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:38 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Спасибо! Попробую. Но проблема все-таки не столько в скорости, сколько , как мне кажется, стандартный грид не в состоянии нормально показать таблицу после фильтра. Трудно это объяснить "на пальцах". Но когда фильтры ставишь в оболочке Фокса никаких проблем нет. Когда на форме в гриде - виснет при переходе по записям. Особенно если скроллинг грида покрутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:51 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
[quot Alex Sheff]вместо фильтра. Код: plaintext 1. 2. Это скорее всего работу не ускорит, т.к. сначала все записи закачаются в курсор, а потом еще одна выборка по HAVING в тот же курсор. Лучше создать представление с параметрами фильтрации, привязать его к грид и вперед. И апдейтиться через него проще, без REPLACE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 11:56 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
to AlexMed а если использовать не Having a Where ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:04 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Можно WHERE, но думаю что через VIEW половчее будет работать, все равно когда никогда с этим придется разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:07 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
эт точно, но мне SELECT больше нравится (или просто с VIEW лень разбираться), да и в этом же форуме читал что VIEW - тотже SELECT только интерфейсом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:12 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Конечно же в основе своей это SELECT, но в представлении можно сразу задать параметры для отбора, установит ключевые и обновляемые поля при сохранении изменений, преобразование данных при запросе с удаленных источников данных, надписи для заголовков колонок и т.п. Потом VIEW кидаешь на форму и готов GRID в котором, например, не надо править заголовки столбцов. Правда в FOXе если количество таблиц в представлении больше двух, то представление надо писать руками через CREATE VIEW, построитель тут не помощник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:38 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
А как тогда редактировать данные? select ... into cursor readwrite в другую форму а при закрытии анализ сделанных изменений кстати редактировать данные напрямую не есть хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:45 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Hi, leaf! Кому вопрос? PS Кто знает, можно ли смотреть форум по веткам вопросов или здесь такого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:52 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
AleksMedМожно WHERE, но думаю что через VIEW половчее будет работать, все равно когда никогда с этим придется разбираться. Это вы просто не пробовали представление с таблицы в 600тыс записей создавать. Даже просто View открыть около 2х минут. Это нервы надо железные иметь, чтоб дождаться открытия формы с таким view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 12:57 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
2алекс вопрос автор задал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:00 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
leaf А как тогда редактировать данные? select ... into cursor readwrite в другую форму а при закрытии анализ сделанных изменений кстати редактировать данные напрямую не есть хорошо Таблица буферизована, так что можно откатить изменения, сохранить если все нормально и все такое. А фильтр используется для массовых изменений, да и просто оператору удобно - видит только информацию по выбранным условиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:11 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
2Bege Все конечно зависит от объема и структуры данных. И такой большой базы под рукой нет. Создал базейку из двух полей, залил 120000 записей, создал параметризированное VIEW, время открытия 3,295 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:17 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
e AleksMedВсе конечно зависит от объема и структуры данных. И такой большой базы под рукой нет.Создал базейку из двух полей, залил 120000 записей, создал параметризированное VIEW, время открытия 3,295 сек. Это точно! Но у меня - 24 поля(от 7 до 60 симв) и 600тыс записей (каждый день прибавляется 500-600 записей , монстр , однако :)), и никак не меньше 1.5 минут представление открывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:32 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
2Bege И что все 600000 заливаешь во VIEW? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:36 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
AleksMedИ что все 600000 заливаешь во VIEW? Не все. 150 тыс, может чуть больше. Это имеет значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:42 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Я слабо себе представляю, что делает пользователь со 150 тысячами записей, но увеличив базу до 26 полей, в основном это C(10), и делая выборку с параметрами по двум полям, типа LIKE '%J%' и LIKE '%K%', получил <25 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 14:23 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за советы! Обошлось все буквально парой строк - замена установки фильтра на создание вьюшки, ну и заменой рекордсурса грида в форме на эту вьюшку. Но, все-таки, что-то не то с гридом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:28 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Apply SET ORDER and SET KEY Код: plaintext 1. 2. 3. 4. much more speed than SET FILTER and no need local cursor view :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 01:02 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Hi Bege! Ты в упор не прислушиваешься к вопросу ЗАЧЕМ пользователю 150000 записей! Сделай ему удобную форму задания параметров, продумай ЧТО он обычно ищет и КАК - сократи объём выборки до 100 ну максимум до 1000 записей (ессно используя параметризованный View). Потом добавь индексы по полям, входящим в условия отбора (отбираем по дате - делай индекс по дате, отбираем по какому-то коду, возможно связанному с другой таблицей - делай индекс по коду). И будет тебе счастье, будет заполнятся курсор за < 1 секунду! И все будут просто счастливы! А Grid+Filter и Grid+Relation медленная и мучительная смерть :( Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 01:21 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Igor KorolyovТы в упор не прислушиваешься к вопросу ЗАЧЕМ пользователю 150000 записей!Сделай ему удобную форму задания параметров, продумай ЧТО он обычно ищет и КАК - сократи объём выборки до 100 ну максимум до 1000 записей (ессно используя параметризованный View). Потом добавь индексы по полям, входящим в условия отбора (отбираем по дате - делай индекс по дате, отбираем по какому-то коду, возможно связанному с другой таблицей - делай индекс по коду). И будет тебе счастье, будет заполнятся курсор за < 1 секунду! И все будут просто счастливы! А Grid+Filter и Grid+Relation медленная и мучительная смерть :( Вообще-то, пользователь хочет видеть все 650тыс записей, и по ним делать выборки , которые можно редактировать, но поскольку такие проблемы с гридом и фильтром, была идея поделить информацию по годам , что ли . Отсюда и 150тыс записей. Но это была плохая идея. Пока пробую выборки делать во View, и менять датасурс грида с самой таблицы на local view. Идеально было бы воспользоваться советом acrisuin'a , насчет set key . Индекс для выборки создать можно, а вот как использовать Set key range для выборки с разными типами полей непонятно. Точнее в текстовом виде некорректно как-то обрабатываются поля с датами. Или , если index по полям dtoc(data1) + region , то set key range '01.04.2004'+'Советский', '01.05.2004'+'Советский' выбирает информацию за 01.04.2004,01.05.2001, 01.05.2002,01.05.2003,01.05.2004 и не обращает никакого внимания на значение поля region. Или я что-то неправильно делаю?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 12:04 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Не лучше в схеме Информация->Параметры отбора->Выборка->Корректировка->Сохранение, поменять местами 1 и 2 этап? В DE формы помещается VIEW со свойством NoDataOnLoad=.T., а на форме контролы, с помощью которых формируются параметры отбора, после ввода параметров клик по кнопке "Отобрат/Обновить", REQUERY для VIEW и далее по схеме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 12:35 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
2AleksMed Нельзя, потому что это будет уже совсем другая форма :) Собственно, задача стоит продержаться до появления новой программы. Поэтому,радикально переделывать процесс, и переучивать пользователей не хочется. Сейчас нужно : показать пользователю все записи что у него есть. А пользователь затем либо просматривает\редактирует(с возможностью отката изменений), либо делает выборку, просматривает ее и потом редактирует ее (раньше использовался фильтр), либо делает выборку для отчета(просто курсор). А сразу заставлять выбирать условие нам не подходит. Может пользователь просто полистать информацию за год-два хочет, а представление с нашей информации только открываться пару минут будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 13:05 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Bege А сразу заставлять выбирать условие нам не подходит. Может пользователь просто полистать информацию за год-два хочет, а представление с нашей информации только открываться пару минут будет. А если это будет начальный период дат например с .... по .... за 9мес., и открываться грид будет очень быстро. А если поковыряться , то можно присобачить на меню по правой кнопке мыши готовые периоды дат (например по 9мес), и будет для пользователя илюзия просмотра всей базы периода. И переучивать никого не надо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 13:43 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
2Трехсотый Дело не в периоде. Просто открыть форму , посмотреть и поредактировать - нет проблем, ни со временем открытия, ни с чем либо другим. 4 года так работают, и вполне довольны :) Проблема в гриде. При больших объемах данных он не в состоянии показать нормально отфильтрованные данные(выборка делается по значениям от 1го до 6 полей таблицы, одно из которых - дата).Вот и приходится выкручиваться :) Может кто подскажет, как все-таки пользоваться set key range , если индекс по нескольким полям. Лучше с примером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 14:42 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Ну, для начала, если ты хочешь упорядочивать выборку по составному ключу с датой, то дату надо преобразовать к виду "ГГГГММДД". Специально для этого есть такая функция DTOS() На конце латинская "S". Не надо путать ее с функцией DTOC(). Это не одно и то же. И потом, рассмотри такой вариант как во вложении. Т.е. пользователю изначально открывается пустая формочка (пустой список). Он задает критерии и отображает нужный список. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 15:03 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
2ВладимирМ Спасибо за подсказку dtos() :) Но как все-таки написать set key to range правильно, если индекс по dtos(time)+left(region). Устанавливать set key to range '20040101'+'Советский','20040131'+'Cоветский' по дате нормально, а на район - ноль внимания. Как правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 16:13 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
В данном случае правильно перестроить индекс сначала по району, а потом по дате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 18:14 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Только учесть, что имена районов состоят из разного числа буковок, в общем случае ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 18:16 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Bege2Трехсотый Дело не в периоде. Просто открыть форму , посмотреть и поредактировать - нет проблем, ни со временем открытия, ни с чем либо другим. 4 года так работают, и вполне довольны :) Проблема в гриде. При больших объемах данных он не в состоянии показать нормально отфильтрованные данные(выборка делается по значениям от 1го до 6 полей таблицы, одно из которых - дата).Вот и приходится выкручиваться :) Хочется разобраться, видимо я не понял проблему. Грид на форме? При открытии формы сделайте 2 курсора, 1- все 650тыс., 2- только часть (например за какой то период) для отображения в гриде. Все запросы и выборки делаете по 1 курсору., а результат (если он очень большой) разбиваете на части, и показываете в гриде только первую часть, при этом дав пользователю возможность переключаться между частями результирующего курсора?( например как в html <- 1,2,3-> все) Грид при небольших частях данных будет открываться моментально и отображать как надо. Или я опять не правильно понял проблему и все дело в сортировках внутри грида??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 09:47 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Скажу честно - не всё внимательно прочёл, но... 150000 записей (как минимум) действительно нужно пользователю? Что он с ними делает? Просматривает scroll'om? Помните "Хищника"? - "там кто-то есть... и это не человек..." Мой опыт: SET FILTER - может быть довольно неприятная вещь, но он оптимизируем! Я этим часто пользуюсь на довольно больших базах - 800000 записей, 20-30 полей - помогает... Особенно, если лень одолевает... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 10:00 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Bege2ВладимирМ Спасибо за подсказку dtos() :) Но как все-таки написать set key to range правильно, если индекс по dtos(time)+left(region). Устанавливать set key to range '20040101'+'Советский','20040131'+'Cоветский' по дате нормально, а на район - ноль внимания. Как правильно? Must be Index tag : Код: plaintext 1. 2. 3. 4. 5. cyrilica letters. Andrius ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 10:47 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Трехсотый Грид при небольших частях данных будет открываться моментально и отображать как надо. Или я опять не правильно понял проблему и все дело в сортировках внутри грида??? 2Трехсотый: Проблема в том что надо выборку редактировать. С фильтрами все виснет, а представления открываются долго, а отдельно потом изменения закачивать в основную таблицу муторно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 11:59 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
2 Bege авторНо у меня - 24 поля(от 7 до 60 симв) и 600тыс записей (каждый день прибавляется 500-600 записей Стоит обратить внимание на нормализацию. Наличие в оперативной таблице текстового поля района наводит на нехорошие размышления - нужно вынести в отдельную таблицу. И по другим полям тоже пройтись. авторВ данном случае правильно перестроить индекс сначала по району, а потом по дате Вот это скорее всего неправильно. Индекс по дате - самый эффективный (после первичного ключа), если эта дата соответствует временному порядку добавления записей и (как правило) не меняется. Соответственно, велика вероятность того, что большое количество записей с одинаковой датой будут физически находиться в одном/смежных кластерах диска (зависит от дефрагментации конечно). Эффективность работы дисковой подсистемы с учетом кэша возрастает многократно, особенно на больших таблицах. Т.е. совет использовать индекс по dtos() и set key to range очень правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 15:35 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Bege Проблема в том что надо выборку редактировать. С фильтрами все виснет, а представления открываются долго, а отдельно потом изменения закачивать в основную таблицу муторно. Мне кажется, Вы чего-то не понимаете: -) Либо пользователь ждет один раз пока откроется Local View, либо он наблюдает постоянные тормоза при перемещении по записям. Угадайте с одного раза, что пользователь предпочтет? Правильно, послать такую программу куда подальше. Тормозов быть вообще не должно -) Local View можно сделать обновляемым. Т.е. изменения внесенные во View автоматически попадут в исходную таблицу. Ничего специально закачивать в основную таблицу не надо. -) Уже неоднократно Вам говорили про то, что необходима оптимизация. Грубо говоря - это создание нескольких индексов по условиям отбора. Индексы ускорят как собственно выборку (открытие Local View), так и работу с фильтром. -) В конце концов, никто не мешает наложить фильтр на собственно Local View. Например, в Local View делается выбор только по дате, а все остальные фильтры накладываются уже на сам Local View (на результат выборки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 15:43 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Hi XAndy XAndyВот это скорее всего неправильно. Индекс по дате - самый эффективный (после первичного ключа), если эта дата соответствует временному порядку добавления записей и (как правило) не меняется. Соответственно, велика вероятность того, что большое количество записей с одинаковой датой будут физически находиться в одном/смежных кластерах диска (зависит от дефрагментации конечно). Эффективность работы дисковой подсистемы с учетом кэша возрастает многократно, особенно на больших таблицах. Т.е. совет использовать индекс по dtos() и set key to range очень правильный В отрыве от контекста эти соображения верные. Но если вспомним, что хотел Bege ... BegeНо как все-таки написать set key to range правильно, если индекс по dtos(time)+left(region). Устанавливать set key to range '20040101'+'Советский','20040131'+'Cоветский' по дате нормально, а на район - ноль внимания. Как правильно? ... То получим совсем не то, что хочется. Bege хочет по одному району за период. А получается - за период, но районы игнорируются (нельзя сказать, конечно, что совсем игнорируются, но поведение странное). И почему же, интересно? ;-) А если вспомним про сортировку строк? ;-))) Что, запись '20040101'+'Турецкий' не попадет в set key to range '20040101'+'Советский','20040131'+'Cоветский' ??? ;-))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 16:02 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Urri... То получим совсем не то, что хочется. Bege хочет по одному району за период. А получается - за период, но районы игнорируются (нельзя сказать, конечно, что совсем игнорируются, но поведение странное). И почему же, интересно? ;-) А если вспомним про сортировку строк? ;-))) Что, запись '20040101'+'Турецкий' не попадет в set key to range '20040101'+'Советский','20040131'+'Cоветский' ??? ;-))))))))) 2Urri : Вы правы, при такой сортировке все районы попадают в выборку. Конечно же правильнее (спасибо acrisiun!), наоборот, region+dtos(time) . Но полей для выборки шесть, и получается что надо либо создавать индекс каждый раз по выбранным полям (условиям выборки), что невозможно, потому что таблица буферизованная , да и по времени создание индекса не устраивает. Или насоздавать индексов заранее , сколько там получится комбинация из 6ти ? :) Тоже вопрос. 2 XAndy: Нормализация нужна, не спорю, даже по 4 полям можно. Не знаю о чем думали разработчики этой программы, возможно были и у них какие-то резоны. Сейчас просто нет смысла глобально переделывать это приложение, в ближайшее время начнем разработку замены. А пока поддерживаю в рабочем состоянии эту программу. ВладимирММне кажется, Вы чего-то не понимаете: -) Либо пользователь ждет один раз пока откроется Local View, либо он наблюдает постоянные тормоза при перемещении по записям. 2ВладимирМ : Пользователь заходя в форму для редактирования данных может делать сколько угодно выборок. Им так удобно : выбрал какие-то записи - отредактировал, чтоб другие записи даже и не видно было. Индексы есть, и насчет ускорить выборку индексированием я уже написала выше. Видимо, я немного туманно обрисовала проблему сначала, но сейчас-то уже все честно рассказала. Могу эту формочку вывесить, если кому интересно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 16:49 |
|
||
|
Grid и set filter
|
|||
|---|---|---|---|
|
#18+
Лучше всего, конечно, SELECT. Но чтоб не сильно переделать, предлагаю индексы только по одному полю - всего 6 тегов по всем 6 полям сортировки. Далее SET ORDER TO и далее SET KEY TO по самому отсеивающему записи полю. Ну а оставшиеся условия - далее поставить SET FILTER TO BETWEEN(...) AND BETWEEN(...) AND ... Ну так, примерно. ;-) Фильтр будет оптимизироваться и, на фоне SET KEY TO тормозить не должон. Впрочем, может, условия фильтра будет пытвться оптимизироваться независимо от SET KEY TO. Тогда, несмотря на SET KEY TO, тормоза останутся. Что ж. Тогда убить все оставшиеся 5 тегов кроме того, по которому имеем SET ORDER TO и SET KEY TO. Или не убивать эти теги, но написать в SET FILTER TO BETWEEN(...) AND BETWEEN(...) AND ... NOOPTIMIZE. Предлагаю инициатору темы самому проверить, что в его условиях будет меньше тормозить. Возможно, вариант фильтра без оптимизации окажется гораздо быстрее. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 18:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1595375]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
79ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 403ms |

| 0 / 0 |
