|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
DAiMor, Number уникален только в пределах одного конечного класса. Объект типа Tiger идентифицируется Number-ом, но если какой-то другой объект, Event Log например, ссылается на базовый класс Animal, то одного Number уже не достаточно. >А индекс по Classname достигается через Extent индекс, его хватит чтобы sql запросы не перебирали все объекты classA Да, но Extent индекс нужно будет завести для каждого конечного класса. В чем нет необходимости, если Classname будет содержаться в Primary Key ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 09:03 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
DAiMor ... Только этот индекс не поможет в SQL запросе ... Так аlatalo и не просил этого, в его спецификации таких требований нет alatalo ... что classname (a.k.a x__classname, %%CLASSNAME) ... Третий раз повторяю, обратите наконец внимание: classname '= x__classname !!! classname - имя текущего класса , например "alatalo.baseB" x__classname - ЦЕПОЧКА НАСЛЕДОВАНИЯ , например "~alatalo.baseA~alatalo.baseB~", служебное поле Cache, используется в системном методе %IsA ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 14:20 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
alataloДа, именно так. Собственно весь вопрос этой темы в том, можно ли сообщить Каше, что classname (a.k.a x__classname, %%CLASSNAME) хранится в Primary Key. Таким образом, Primary Key будет одновременно и Extent индексом.Такое не получится сделать, да и смысл так делать пока все равно не ясен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 15:04 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
doublefint, >Третий раз повторяю... Честно сказать, вы могли бы и в превый раз этого не говорить. Мы не собираемся писать то, что я здесь называю classname, в Primary Index сами. Речь в этой теме про то, каким образом (и возможно ли это в принципе), сообщить Каше, что та "ЦЕПОЧКА НАСЛЕДОВАНИЯ", которую он подефолту пишет здесь: Storage Default { <Value name="1"> <Value>%%CLASSNAME</Value> ... находится в первом сабскрипте Primary Index. Если это возможно, то 'select * from classB' может обойтись без перебора всей таблицы даже без Extent индекса ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 16:11 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
DAiMor, > да и смысл так делать пока все равно не ясен смотри, у тебя 120 производных класса, зачем заводить 120 Extent индексов, если их роль может выполнить Primary Key? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 16:18 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
alatalo ... могли бы и в превый раз этого не говорить... 4. Цепочка наследования - служебное поле. Т.е предназначено и используется производителем СУБД в его собственных целях ( ..%IsA ), невидимое для большиства подсистем. Его нельзя указать в качестве свойства при определении индекса. :) alatalo %%CLASSNAME ...находится в первом сабскрипте ... Нет, %%CLASSNAME находится в первой позиции $lb(). Хранение по умолчанию ( Cache Storage ) хранит данные в формате ^package.classD(ID)=$lb(%%CLASNAME, props...). Соответственно, реализация вашей идеи приведет к полному сканированию глобали. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 22:21 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
doublefint, >...Его нельзя указать в качестве свойства при определении индекса очень возможно что нельзя, но я не вижу принципиальных препятсвий почему "служебное поле предназначенное и используемое производителем СУБД в его собственных целях ( ..%IsA ), невидимое для большиства подсистем" может использоваться при определении хранения (%%CLASSNAME), но не может использоваться в индексе: его значение не меняется и известно на момент первой записи в базу. >Нет, %%CLASSNAME находится в первой позиции $lb(). вы меня неправильно поняли: он там находится по умолчанию, но я хочу его в первый сабскрипт индекса >Соответственно, реализация вашей идеи приведет к полному сканированию глобали в каком сценарии? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:54 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
alatalo но я не вижу принципиальных препятствий Навскидку - совместимость и универсальность. alatalo но я хочу его в первый сабскрипт индекса Если вам нужно другое поведение, то вы или заказываете его у производителя , или реализуете самостоятельно с помощью предоставленных производителем возможностей - собственные поля, индексы или альтернативные схемы хранения alataloв каком сценарии? В сценарии со схемой хранения, когда цепочка наследования ( 5. которая не эквивалентна имени класса ) находится в первом ключе или в первой позиции глобали ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 16:25 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
doublefint, >Навскидку - совместимость и универсальность. очень вероятно, что какие-нибудь фундаментальные проблемы с этим действительное есть, но точно не с совместимостью и универсальностью, поскольку возможность писать classname еще и в индекс помимо его обычного места ни на что из перечисленного не влияет. Ровно тоже, что и с возможностью хранить в индексе копии обычных полей. >Если вам нужно другое поведение, то вы или заказываете его у производителя, или реализуете самостоятельно с помощью предоставленных производителем возможностей да ну?! еще один совершенно бесценный совет :) >В сценарии со схемой хранения, когда цепочка наследования ( 5. которая не эквивалентна имени класса ) находится в первом ключе или в первой позиции глобали в каком сценарии (поиск объекта, чтение его полей etc) копия classname в индексе приведет к какому-либо дополнительному "сканированию глобали"? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 18:32 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
alatalo возможность писать classname еще и в индекс помимо его обычного места, ни на что из перечисленного не влияет 6. classname не тоже самое, что и %%CLASSNAME Предполагаемую глубину наследования вы не оговаривали. Можете дать свою оценку размера строки ( цепочки наследования ), которую надо поместить как в индекс, так и в данные? alatalo да ну?! Не благодарите. Наносить добро, причинять пользу :) Так какой путь выбираете - самостоятельно или в WRC?alatalo в каком сценарии копия classname в индексе приведет к какому-либо дополнительному "сканированию глобали"?7. %%CLASSNAME сборная строка с именами классов, т.е промежуточная информация, которую еще нужно обработать. Поэтому в любом, в котором будет необходимость использовать такой индекс ( за исключением, пожалуй, запроса "найди все id, с такой же цепочкой наследования" ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 02:18 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
doublefint, >classname не тоже самое, что и %%CLASSNAME в этой теме classname=%%CLASSNAME=цепочка наследования >Можете дать свою оценку размера строки ( цепочки наследования ), которую надо поместить как в индекс, так и в данные? нет здесь никакой проблемы: если помещается в $lb(%%CLASSNAME, ...) то поместится и в индекс >Так какой путь выбираете - самостоятельно или в WRC? вне темы > запроса "найди все id, с такой же цепочкой наследования" это единственный вид запроса, который меня интересует. Но даже если нужно искать инстансы промежуточного класса, этот индекс можно использоваться не менее эффективно ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 08:04 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
alatalo ... в этой теме classname=%%CLASSNAME=цепочка наследования ... давайте тогда называть его classeslist, что бы все таки отличать.alatalo нет здесь никакой проблемы: если помещается в $lb(%%CLASSNAME, ...) то поместится и в индекс Уверены? alatalo Но даже если нужно искать инстансы промежуточного класса, этот индекс можно использоваться не менее эффективно Приведете пример кода для function( classeslist, classname ){}? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:25 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
doublefint, >давайте тогда называть его classeslist, что бы все таки отличать в этой теме я назыаю его classname >Уверены? Если вы можете записать ^a=$lb(classname, ...), то в чем проблема записать ^b=classname? >Приведете пример кода для function( classeslist, classname ){}? classnamePrev=classname-1 ; условно, формируем предыдущее значение classname перебираем индекс ордером начиная с classnamePrev пока строка начинается с classname ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 10:02 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
alatalo ... в чем проблема записать ^b=classname? ... alatalo ... но я хочу его в первый сабскрипт индекса ... ??? Приведите, пожалуйста, пример того, как вашему мнению, должна выглядеть индексная глобаль? alatalo перебираем индекс ордером начиная с classnamePrev пока строка начинается с classname alatalo ... Но даже если нужно искать инстансы промежуточного класса ... не менее эффективно ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 10:57 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
doublefint, >Приведите, пожалуйста, пример того, как вашему мнению, должна выглядеть индексная глобаль? как уже многократно повторялось: ^data(classname,number)=data ; $lb(classname,...) >?? да, первым ордером попадаем сразу на первый промежуточный класс. Последущие перебираем до тех пор, пока classname начинается с искомой строки. Минимальные издержки, даже не учитывая, что в реальной системе очень ограниченное число классов ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 15:18 |
|
Индекс на x__classname
|
|||
---|---|---|---|
#18+
alatalo, classname еще и в индекс Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 16:53 |
|
|
start [/forum/topic.php?fid=39&msg=39703982&tid=1556239]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 418ms |
0 / 0 |