Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
05.01.2012, 22:56
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
Если нужен автоинкремент по одной таблице то что лучше использовать SEQUENCE, IDENTITY , SERIAL или AUTOINCREMENT? Допустим я использовал для: 1. MSSQL - IDENTITY 2. MYSQL - AUTOINCREMENT 3. ORACLE - SEQUENCE + trigger 4. FIREBIRD - SEQUENCE + trigger 5. POSTGRESQL - SEQUENCE + trigger (но он же поддерживает и SERIAL) Кстати, в чем различие IDENTITY, SERIAL и AUTOINCREMENT? Чем от них отличается SEQUENCE понятно - это сквозная нумерация по 1 и более таблиц, но чем он лучше остальных способов не понятно и не очень красиво выглядит триггер с ним на каждую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:03
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE vs IDENTITY4. FIREBIRD - SEQUENCE + trigger Не нравится писать собственные триггера - используй AUTOINCREMENT, сервер нужный триггер сам создаст. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:14
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
авторДопустим я 1. MSSQL - SEQUENCE + DEFAULT CONSTRAINT авторпо одной таблице ... на каждую таблицу Вы, уж, определитесь в постановке задачи... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:30
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE MS SQLавторДопустим я 1. MSSQL - SEQUENCE + DEFAULT CONSTRAINT авторпо одной таблице ... на каждую таблицу Вы, уж, определитесь в постановке задачи... http://msdn.microsoft.com/en-us/library/ff878091(v=SQL.110).aspx SEQUENCE появиться только в SQL Server 2012. И что значит DEFAULT CONSTRAINT? В SQL Server 2012 можно будет SEQUENCE писать в DEFAULT и он сам будет автоинкремениться при инсертах? К слову в Oracle, Firebird и PostgreSQL так сделать нельзя, нужен обязательно триггер. Постановки задачи как таковой нет - есть необходимость разобраться в каком случае что лучше? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:36
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE vs IDENTITY5. POSTGRESQL - SEQUENCE + trigger (но он же поддерживает и SERIAL)SERIAL + DEFAULT в INSERT'е. Это не создает триггера. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:37
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
К слову в Oracle, Firebird и PostgreSQL так сделать нельзя, нужен обязательно триггер. В PostgreSQL триггер не нужен: там есть псевдотип serial, который сам (почти) все делает. При создании колонки, напр., id serial будет создана последовательность, из которой автоматически будут браться значения. Технически это будет id default nextval('sequence_name'). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:38
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE vs IDENTITYВ SQL Server 2012 можно будет SEQUENCE писать в DEFAULT и он сам будет автоинкремениться при инсертах? http://msdn.microsoft.com/en-us/library/ff878370(v=sql.110).aspx Example D SEQUENCE vs IDENTITYПостановки задачи как таковой нет Когда будет - приходите... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:43
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE vs IDENTITYно чем он лучше остальных способов не понятноТем что это механизм генерации уникальных id не привязанный к таблицам и полям. SEQUENCE vs IDENTITY не очень красиво выглядит триггер с ним на каждую таблицу. А явно в инсерте sequence.nexval прописать религия не позволяет? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2012, 23:48
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SERG1257А явно в инсерте sequence.nexval прописать религия не позволяет? Когда программисту надоедает работать руками - он начинает работать головой. ((с) Не моё) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.01.2012, 11:07
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE vs IDENTITYЧем от них отличается SEQUENCE понятно - это сквозная нумерация по 1 и более таблиц, но чем он лучше остальных способов не понятно Возможность "оторвать" значение от таблицы даёт свободу манёвра, позволяющую легче реализовывать некоторую функциональность. Типовые варианты использования: Создание/редактирование на клиенте мастер-детальных данных без длинных транзакций Сквозная нумерация однородных сущностей, распределённых по нескольким таблицам Генерация номеров документов Извращения типа "обойти номера записей, вставленных руками" SEQUENCE vs IDENTITY и не очень красиво выглядит триггер с ним на каждую таблицу. Это да. Какого хрена ещё во времена какого-нибудь Oracle 7 не сделали DEFAULT SEQ_NAME.NEXTVAL, я не понимаю и вряд ли пойму. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.01.2012, 11:10
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SERG1257А явно в инсерте sequence.nexval прописать религия не позволяет? У такого решения есть изрядные недостатки с точки зрения качества кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2012, 15:16
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
> У такого решения есть изрядные недостатки с точки зрения качества кода. а переключение контекста в триггере это хорошее качество кода? Каков по Вашему мнению тогда лучший способ вызова nextval в Oracle? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2012, 16:41
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
Shtockа переключение контекста в триггере это хорошее качество кода? Переключение контекста - это вопрос производительности. К качеству кода (в том смысле, в котором обычно понимается это слово) это отношения не имеет. ShtockКаков по Вашему мнению тогда лучший способ вызова nextval в Oracle? Зависит от контекста. В разных ситуациях я их использовал пожалуй что все которые могу придумать, и каждый из них обладает недостатками, позволяющими легко построить контрпример "когда этот способ явно не лучший". ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2012, 17:02
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
Я, например, очень полюбил nextval прямо в select, когда использую insert all. Там без него плохо.... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2012, 17:06
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
ShtockЯ, например, очень полюбил nextval прямо в select, когда использую insert all. Там без него плохо.... Для вставки из запросов в таблицы связанные по FK? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2012, 17:06
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
softwarerЗависит от контекста. В разных ситуациях я их использовал пожалуй что все которые могу придумать, и каждый из них обладает недостатками, позволяющими легко построить контрпример "когда этот способ явно не лучший". здесь играем, здесь не играем, а тут мы рыбу заворачивали (с) и это в контексте качества кода !? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2012, 17:17
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
Yo.!, не приходило ли Вам когда-нибудь в голову, что, например, ETL-загрузка данных, OLTP с процедурной оболочкой над таблицами и, например, толстенный клиент вообще без логики на сервере - это немного разные контексты (не говоря уже о том, что часто разные проекты и разные заказчики), и применять в них один универсально плохой метод будет только... ну в общем кое-кто и будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2012, 22:53
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
>связанные по FK - аха, именно для их. Для моих задач обычное дело когда одним инсертом данные уходят в 3-6 таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.01.2012, 03:57
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
softwarerи применять в них один универсально плохой метод будет только... ну в общем кое-кто и будет. буквально на днях наблюдал базу от InterBase 4.0. Там несколько генераторов инкрементируются в - некоторые только в триггерах - некоторые только в процедурах - некоторые одновременно в нескольких триггерах (для разных таблиц) - некоторые ни в триггерах, ни в процедурах (а только в приложении), т.е. по базе их назначение понять нельзя. я понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.01.2012, 11:06
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
kdvя понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу. Не понимаете - значит, вполне вероятно, зря городил. С другой стороны, например, в первый раз я отступил от принятой в конторе практики генерации id в триггерах, когда требовалось массово грузить в приложение некие данные со стороны, и отказ от этих триггеров увеличил скорость загрузки в пять-десять раз. Полагаете, был неправ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.01.2012, 21:24
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
В Informix используется Serial, можно еще Sequence, но когда есть Serial зачем использовать что то еще (если нужны последовательные значения)? Не надо городить триггеры, все просто - объявил поле Serial и получай готовые значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.01.2012, 22:04
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
Andron , вполне логично. А насколько скорость serial отличается от аналогичной через SEQUENCE + trigger или SEQUENCE в INSERT-запросе? softwarerkdvя понимаю, что это все разные методы использования генераторов. Но не понимаю, зачем разработчику потребовалось городить такую кашу. Не понимаете - значит, вполне вероятно, зря городил. С другой стороны, например, в первый раз я отступил от принятой в конторе практики генерации id в триггерах, когда требовалось массово грузить в приложение некие данные со стороны, и отказ от этих триггеров увеличил скорость загрузки в пять-десять раз. Полагаете, был неправ? 1. Отключили триггеры и импользовали SEQUENCE в инсертах? 2. Или вообще отказались от SEQUENCE? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.01.2012, 14:20
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE vs IDENTITY1. Отключили триггеры и импользовали SEQUENCE в инсертах? 2. Или вообще отказались от SEQUENCE? Отключил триггеры, сделал сиквенсам increment by 1000 и формировал данные для direct load-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.01.2012, 14:44
|
|||
---|---|---|---|
|
|||
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
softwarerSEQUENCE vs IDENTITY1. Отключили триггеры и импользовали SEQUENCE в инсертах? 2. Или вообще отказались от SEQUENCE? Отключил триггеры, сделал сиквенсам increment by 1000 и формировал данные для direct load-а. Т.е. в интервалах по 1000 нумеровали уже сами? А установить кэш не пробовали ALTER SEQUENCE seq CACHE 2000; или вообще нумеровать самому без сиквенсов через оконные функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.01.2012, 14:50
|
|||
---|---|---|---|
SEQUENCE vs IDENTITY vs SERIAL vs AUTOINCREMENT |
|||
#18+
SEQUENCE vs IDENTITYТ.е. в интервалах по 1000 нумеровали уже сами? Да. SEQUENCE vs IDENTITYА установить кэш не пробовали А смысл? Кэш регулирует быстродействие сервера, а целью в данном случае было избежать огромного количества тупых синхронных запросов к серверу "за айдишниками". SEQUENCE vs IDENTITYили вообще нумеровать самому А нафига такое счастье? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=35&tablet=1&tid=1552595]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 134ms |
0 / 0 |