|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Вот придумываю новую стрктуру данных и хотел посоветоваться... Хочу как-то стандартизировать хранение и обращение к данным... Например ФИО граждан много где используется: - поставленные на учет - бухгалтер и директор предприятия - учредители - высвыбождаемые по сокращению - сотрудники Для этого делаю класс ФИОФамилияИмяОтчествоКому принадлежит Где "Кому принадлежит" это некий уникальный ключ... Теперь применяю это к гражданам поставленым на учет. На учет гражданин может встать много раз и еще при этом менять это самое ФИО... Делаю классы ГражданинКодДата рождения Смена ФИОКодДатаКод гражданина Теперь сталкиваюсь с тем, что получить то самое ФИО гражданина на некую дату довольно долгий процесс. Нужно выбрать все изменения ФИО этого гражданина по указаную дату... Отсортировать это в обратном порядке и взять первую запись. Даже 500 граждан уже долго выводятся... Дублировать данные так же не хочется... Но и такое время получения ФИО так же не устраивает. ---------- Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:28 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Вот запрос, коим выбираю ФИО... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:33 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
В soi_arh_data_cls.name хранятся все ФИО... В soi_arh_data.name хранятся изменения ФИО граждан поставленых когда-либо на учет... А b.citizen это код некоего гражданина... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:36 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
По всем ключевым, связующим таблицы, полям сделаны индексы... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:37 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Вам принципиально получать это запросом? Не люблю я именно такие вещи делать запросами. Лучше сделать метод. В метода, кстати, тоже можно пользоваться запросами, а можно искать ид нужной записи ордером по индексу. Так как метод работы со структурой глобала находится в классе, я не считаю это преступлением. Работает в одно действие. Ну а если принципиально делать это запросом, во-первых, пересчитайте селективности и после этого давайте план запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:40 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Кстати, у вас дублирование? отдельная таблица для неких актуальных ФИО и отдельно история? Стоит ли так? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:42 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
krvsa, Приветствую! может такой подход устроит: в классе одно свойство ФИО но оно в виде: %LB($LB(date,актуальное ФИО),$LB(date,предыдущее ФИО),....) т.е. при сохранении записи мы всегда ее ставим в листе на первое место, со сдвигом остальных + дополнительный метод, вычисляемое поле, и т.д. в которая при передачи параметра возвращает необходимое ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 11:44 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Блок А.Н.Вам принципиально получать это запросом? Нет. Просто удивила такая задержка по времени... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:05 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Блок А.Н.Кстати, у вас дублирование? отдельная таблица для неких актуальных ФИО и отдельно история? Дублирования пока нет. Есть таблички - граждане - история смены ФИО (только дата смены) - все ФИО Блок А.Н.Стоит ли так? Так вроде вся информация сейчас нужна... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:07 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Ymka2007krvsa, Приветствую! может такой подход устроит: в классе одно свойство ФИО но оно в виде: %LB($LB(date,актуальное ФИО),$LB(date,предыдущее ФИО),....) Неее. Это вообще не подойдет... Т.к. гражданина нужно искать запросом (!) по любому его ФИО, а при таком подходе разве запрос будет работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:09 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
krvsa , Почему бы вместо select * from soi_arh_data_cls.name не использовать select top 1 * from soi_arh_data_cls.name? TOP ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:34 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
servitПочему бы вместо select * from soi_arh_data_cls.name не использовать select top 1 * from soi_arh_data_cls.name? В моём случае нужна "последняя ближайшая дата"... Поможет ли это ускорить? Т.к. поставить Код: sql 1.
не проблема... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:56 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Однако с Код: sql 1.
есть ускорение. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:02 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
krvsaНужно выбрать все изменения ФИО этого гражданина по указаную дату... Отсортировать это в обратном порядке и взять первую запись .krvsaПоможет ли это ускорить?krvsaесть ускорениеВсегда лучше ограничивать число возвращаемых данных, если это возможно, особенно учитывая наличие оптимизации для TOP ... ORDER BY . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:14 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
servitВсегда лучше ограничивать число возвращаемых данных, если это возможно, особенно учитывая наличие оптимизации для TOP ... ORDER BY . Спасибо, учту на будущее. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:27 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
servitособенно учитывая наличие оптимизации для TOP ... ORDER BY . Только мало что с того понял... Читал Яндекс перевод Яндекс_переводНачиная с Caché 5.2.2, оптимизация было сделано для ТОП ... ORDER BY, чтобы уменьшить интервал до первой строки был подготовлен. Как правило, эти изменения существенно улучшить производительность. Однако, в редких случаях, эти оптимизации эвристики сделать запрос хуже. В этих случаях,% NOTOPOPT намек теперь доступен в силу нормальную общая стоимость оптимизации обработки синтаксис таков: ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:29 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
При таком варианте, с %NOTOPOPT Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
не заметил ускорения... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:31 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
krvsaПри таком варианте, с %NOTOPOPT не заметил ускорения...Зачем Вам использовать %NOTOPOPT? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:35 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
servitЗачем Вам использовать %NOTOPOPT? Я понятия не имею что это за "зверь"... Ты дал ссылку на него... Я по переводу вообще не понял зачем это нужно, но таки вставил для эксперимента. Вот и все... Для чего %NOTOPOPT нужен? Когда его использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:39 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
krvsaДля чего %NOTOPOPT нужен?В редких случаях, оптимизация TOP ORDER BY делает план запроса хуже. Именно для отключения этой оптимизации и служит %NOTOPOPT. krvsaКогда его использовать?Когда план запроса без него хуже, а с ним лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:51 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
servitkrvsaКогда его использовать?Когда план запроса без него хуже, а с ним лучше. Лаконично! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:52 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Решил для ускорения хранить "самое последнее ФИО" со ссылкой сразу на код гражданина... Т.о. оперативно смотреть ФИО будет достаточно быстро. Вот только придется поддерживать "целостность" такого "ускорения"... Поскольку появляется дубляж одного их ФИО гражданина и не факт что это будет действительно "самое последнее ФИО". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 14:47 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
servitkrvsaДля чего %NOTOPOPT нужен?В редких случаях, оптимизация TOP ORDER BY делает план запроса хуже. Именно для отключения этой оптимизации и служит %NOTOPOPT.Я бы не сказал, что в редких. Иногда при наличии TOP оптимизатор строит план запроса, используя поля сортировки, а не поля условий, а это иногда плохо. %NOTOPOPT отключает такую оптимизацию. krvsa, а почему вы не хотите использовать две таблицы? человек - ... история смены фио - (ид человека, дата смены, фио). По ид человека и дате смены делаете индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 15:13 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
krvsaРешил для ускорения хранить "самое последнее ФИО" со ссылкой сразу на код гражданина... Т.о. оперативно смотреть ФИО будет достаточно быстро. Вот только придется поддерживать "целостность" такого "ускорения"... Поскольку появляется дубляж одного их ФИО гражданина и не факт что это будет действительно "самое последнее ФИО".Я так сделал один раз и пожалел. Если хотите так делать, то делаете ссылку-вычисляемое поле. Не так уж потеряете по скорости, зато не будет проблем с целостностью данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 15:14 |
|
Как бы соединить скорость и стандартизацию?
|
|||
---|---|---|---|
#18+
Блок А.Н.krvsa, а почему вы не хотите использовать две таблицы? человек - ... история смены фио - (ид человека, дата смены, фио). По ид человека и дате смены делаете индекс. я бы сделал история фио - (ид человека, дата отмены, фио). пустая дата отмены даёт текущие фио (последние) по ид человека - история изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 15:36 |
|
|
start [/forum/topic.php?fid=39&fpage=28&tid=1557204]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 233ms |
total: | 393ms |
0 / 0 |