Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
1) Есть таблица (например список товаров) с уникальным полем KOD (Index - primery). какого типа поле (integer/numeric/character) лучше использовать, в чем разница ындексирования по этим типам полей. 2) Для уникальности кода в default value прописываю SYS(3) - это правильно (всмысле невылезет ли мне это потом боком в каких то ситуациях) Всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 13:11 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
Раздел "Ключевое поле" http://www.foxclub.ru/kb/index.php?sid=24056&aktion=artikel&rubrik=001&id=6&lang=ru Индексы http://www.foxclub.ru/kb/index.php?sid=29869&aktion=artikel&rubrik=004&id=57&lang=ru Sys(3) теоретически может дать повторяющееся значение. Если я правильно понимаю, то эта функция использует системную дату. Значит, есть вероятность дублей при: -) Играх с системным таймером (изменение даты и времени) -) При работе в многопользовательском режиме (генерация с разных машин) Однако Primary - индекс отловит эту ошибку (возможное дублирующее значение) и не просто не даст создать запись. Собственно, об этом есть в описании к функции SYS(3) HELP VFP6SYS(3) may return a non-unique name when issued successionally on a fast computer. Чтобы этого избежать, логичнее использовать специальные функции для генерации GUID (полно в интернете) или же использовать автоинкремент (через специальную служебную таблицу, хранящую последний использованный или первый не использованный код в указанной таблице) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 14:03 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
Alex Sheff1) Есть таблица (например список товаров) с уникальным полем KOD (Index - primery). какого типа поле (integer/numeric/character) лучше использовать, в чем разница ындексирования по этим типам полей. 2) Для уникальности кода в default value прописываю SYS(3) - это правильно (всмысле невылезет ли мне это потом боком в каких то ситуациях) Всем спасибо Отвечаю: 1) Все зависит от того, будет ли это поле еще где-то использоваться (например, в каких-то отчетах) кроме обеспечения связи между файлами и какой "физический смысл" смысл этого поля. Например, в практике моей работы, было использование ключевого поля (читай KOD) в качестве артикула (номенклатурного номера). При этом поле имело сложную структуру: <группа>.<№ внутри группы>. В этом случае без поля типа character было не обойтись (артикулы 2.18 и 2.180 - суть разные изделия, а в поле типа Numeric такие различия нивелируются)! Если нет подобных ограничений, то какое поле использовать - дело вкуса. Если, конечно, быть до конца пунктуальным, то индексирование по полю типа character должно занимать больше времени, чем по integer/numeric, так как строки сравниваются во-первых, по длине, во-вторых, посимвольно. Но, я так считаю, на современных компьютерах эта разница не будет ощущаться... 2) В Help'e к VFP5 указано, что на быстрых машинах функция SYS(3) может давать одинаковые значения при последовательном обращении к ней. Для уменьшения вероятности совпадений рекомендовано использовать функцию sys(2015). Эта функция строит значение на основе системных даты и времени (с точностью до миллисекунд). Если два обращения к функции идут в течение одного интервала (нескольких миллисекунд), то функция также возвращает два одинаковых значения :-(. Но, если речь не идет об интенсивной (!)многопользовательской (20-50-100 человек) работе, такое маловероятно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 14:14 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
Насчет SYS(2015) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. P.S. Заранее прошу прощения, если "натормозил"... Бессонная ночь... :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 14:34 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
Primary они же Unique индексы не поддерживаются Rushmore оптимизацией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 14:35 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
MarinaVPPrimary они же Unique индексы не поддерживаются Rushmore оптимизацией Марина, Вы куда-то не туда посмотрели. Primary - это вовсе не то же самое, что и Unique в среде FoxPro. Как говроят в Одессе - это две большие разницы. Primary - физически запрещает создание двух записей с одинаковым значением ключа. Используется при Rushmore-оптимизации Unique - физически допускает создание двух и более записей с одинаковым значением ключа. Но отображает только одно из этих повторяющихся значений. НЕ используется при Rushmore-оптимизации. Не рекомендуется использовать в более старших версиях. Оставлен для совместимости. В дезайнере таблиц нет возможности выбора такого типа индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 14:46 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
Владимир - действительно не туда посмотрела - бывает "тут за день так накувыркаешься" - так что теперь с меня мороженное Спасибо что вовремя ткнули носом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 15:12 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
2 Alex Sheff [quote]какого типа поле (integer/numeric/character) лучше использовать[/quote] Integer [quote]в чем разница ындексирования по этим типам полей.[/quote] numeric хранится как строка из цифр (N(10) займёт 10 байт как в таблице, так и в индексе) Integer - всего 4 байта (бинарный формат) в то-же время позволяя иметь 2^32 различных значений (ну обычно отрицательные отбрасывают - значит остаётся 2^31 а это число с 10-ю знаками). Кроме того учитывай "простоту" использования Integer - когда все ключевые поля Integer - не стоит вопрос "а какой-же это был размер у поля NNN - N(4) или N(6) или может оно вообще было символьным?" [quote]Для уникальности кода в default value прописываю SYS(3) - это правильно[/quote] Конечно нет! ? SYS(3) ? SYS(3) ? SYS(3) ? SYS(3) - что видим? Повтоярются однако :) Ну разве что у тебя 286/386-й комп :) SYS(2015) не лучше. 2 Станислав C. Есть хорошее понятие "суррогатый ключ" - с ним жить проще и веселее чем с всякими заумными "значащими" ключами. Которые к тому же имеют дурную тенденцию часто изменяться. 2 Redrik Да, в рамках ОДНОЙ СЕССИИ SYS(2015) генерирует неповторяющиеся значения - если вызовы идут слишком часто, то просто наращивается на 1-we значение и всё (это было введено то-ли в VFP6 то ли даже ещё раньше). ОДНАКО по своей сути это всё-же неправильный генератор ID. Например запусти на 2-х машинах свой тест - увидишь повторения. И даже ещё хуже - после перезапуска фокса (ну т.е. в новой сессии) функция SYS(2015) снова начнёт считать от текущей даты-времени. А значит если ты в первой сессии нагенерировал скажем 1Млн ключей SYS(2015) - то велик шанс что быстро запущенная 2-я сессия начнёт генерировать ключи с "уже пройденных" в первой сессии значений. Если воспользоваться функциями перобразования SYS(2015) обратно в дату-время, то можно увидеть, что за твои 2 секунды фокс "уходит вперёд" в SYS(2015) на 15 минут! А значит если ты перезапустишь среду в течении этого периода времени, то получишь от SYS(2015) уже выделенные ранее значения. Конечно в реальной работе такого добится трудно - всё-же вставка 1Млн записей займёт времени поболее 2х секунд, да и реально такие объёмы обычно не добавляются единовременно, но факт тем не менее остаётся. Posted via ActualForum NNTP Server 1.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 23:41 |
|
||
|
прошу совет об INDEX
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov 2 Станислав C. Есть хорошее понятие "суррогатый ключ" - с ним жить проще и веселее чем с всякими заумными "значащими" ключами. Которые к тому же имеют дурную тенденцию часто изменяться. К сожалению, это не от меня зависело :-(. По роду работы пришлось сопровождать и развивать уже действующую на предприятии корпоративную систему (на базе FPD) со всеми ее недостатками... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2004, 07:34 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1595724]: |
0ms |
get settings: |
11ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 405ms |

| 0 / 0 |
