Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Умолчательное направление при построении индекса по PK / 25 сообщений из 69, страница 1 из 3
05.02.2016, 12:38
    #39163780
shaposh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Непонятно умолчательное направление при построении индекса по PK. То есть в 9 случаях из 10 подобное поле является целочисленным и заполняется автоинкриментом генератора, поэтому актуальность получения максимального значения по полю PK на порядок выше чем минимального. Но индекс для PK по умолчанию строиться ASC, что позволяет получать с использованием данного индекса только минимальное значение, Но не максимальное.

Т.е.
ALTER TABLE TEST
ADD CONSTRAINT PK$TEST_ID
PRIMARY KEY (ID);
Здесь Select max(id) from TEST не использует индекс, разумеется
Здесь Select min(id) from TEST использует индекс

ALTER TABLE TEST
ADD CONSTRAINT PK$TEST_ID
PRIMARY KEY (ID)
USING DESCENDING INDEX IX$TEST_ID;
Здесь будет наблюдаться обратная ситуация.

Актуальность получения MAX(ID) для поля PK выше чем MIN(ID), поэтому представляется целесообразным по умолчанию строить DESС-индекс для поля PK.
...
Рейтинг: 0 / 0
05.02.2016, 12:47
    #39163791
Граур Станислав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
shaposh
Актуальность получения MAX(ID) для поля PK выше чем MIN(ID), поэтому представляется целесообразным по умолчанию строить DESС-индекс для поля PK.

А как же генераторы?
...
Рейтинг: 0 / 0
05.02.2016, 12:52
    #39163799
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
shaposh,

все эти рассуждения чешуя. По хорошему нужны двунаправленные индексы и они должны создаваться по умолчанию. Но когда это сделают и сделают ли вообще неизвестно.
...
Рейтинг: 0 / 0
05.02.2016, 12:59
    #39163811
shaposh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
"А как же генераторы?"
Запись может быть удалена

"нужны двунаправленные индексы"
Нужны, ой как нужны, но когда они появятся и появятся ли вообще?

А вот до их появления можно путем изменения умолчательного поведения улучшить ситуацию
Причем реализация вряд ли трудозатратна
...
Рейтинг: 0 / 0
05.02.2016, 13:00
    #39163813
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
1) max(pk) это как-то совсем не по феншую
2) desc-индексы обычно чуть медленнее asc-индексов (ибо ключ длиннее)
...
Рейтинг: 0 / 0
05.02.2016, 13:03
    #39163818
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Hello, Shaposh!
You wrote on 5 февраля 2016 г. 13:00:06:

Shaposh> Непонятно умолчательное направление при построении индекса по PK.
> То есть в 9 случаях из 10 подобное поле является целочисленным и заполняется автоинкриментом генератора,
> поэтому актуальность получения максимального значения по полю PK на порядок выше чем минимального.
генератору похеру инкрементироваться, или декрементироваться.
равно как и значению поля суррогатного ключа.
инкрементируешь - твоё право.
но тогда не нужно в связи с этим пытаться изменить окружающий мир,
исходя из личного видения вселенской гармонии.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:11
    #39163829
shaposh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
О, опять "мимопроходящий умник" с бесполезными рассуждениями на философские темы.

Даже боюсь спросить как много разработчиков в процентном отношении получают целочисленный первичный ключ путём уменьшения генератора...
...
Рейтинг: 0 / 0
05.02.2016, 13:12
    #39163832
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
shaposhактуальность получения максимального значения по полю PKВ где она ? Зачем это нужно ?
...
Рейтинг: 0 / 0
05.02.2016, 13:20
    #39163844
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
hvladshaposhактуальность получения максимального значения по полю PKВ где она ? Зачем это нужно ?
Для того, чтобы получить текущую (самую актуальную, самую свежую) какую-либо сущность. Получить её можно (и нужно) с помощью SELECT MAX(ID)
...
Рейтинг: 0 / 0
05.02.2016, 13:21
    #39163849
shaposh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Ну мало ли задач при реализации бизнес-логики возникает.
Получить последнюю актуальную вставленную запись....
Что то там с неё прочитать

Мне от различных команд программистов при внедрениях просто надоело отвечать на вопрос "почему не используется индекс в запросе "SELECT MAX(ID)"
И вот никто ни разу не спросил ("почему не используется индекс при SELECT MIN(ID)")

Просто получать MIN(ID) действительно не нужно практически никогда
MAX(ID) - иногда нужно, но вот индекс для этого не подходит

Я не прошу так сделать, я предложил рассмотреть целесообразность этого
...
Рейтинг: 0 / 0
05.02.2016, 13:23
    #39163854
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
shaposhНужны, ой как нужны, но когда они появятся и появятся ли вообще?
Когда кто-нибудь придумает алгоритм deadlock-free работы с двусвязным списком, чего за
последние 30 лет никто так и не сумел.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:26
    #39163858
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Hello, Shaposh!
You wrote on 5 февраля 2016 г. 13:26:02:

Shaposh> Я не прошу так сделать, я предложил рассмотреть целесообразность этого
юный наивный мечтатель
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:30
    #39163866
shaposh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
"Мимопроходящему умнику" - Ты для разнообразия, хоть что-нибудь адекватное по теме... Помимо своего обычного словесного поноса выдать в состоянии?
...
Рейтинг: 0 / 0
05.02.2016, 13:34
    #39163870
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
shaposh> что-нибудь адекватное по теме...

Хватит агриться уже.

По теме - по умолчанию-то оно так,
но вас же не заставляют, делайте DESC.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:39
    #39163876
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
shaposhпоэтому актуальность получения максимального значения по полю PK на порядок выше чем минимального

Мне тоже кажется, что в большинстве (но далеко не во всех!) случаях в основном в таблице будт брать последние значения.
Хотя к самим генераторам это никакого отношения не имеет!

НО!

Как почти всегда в данных важно не только "как чаще всег очитают", но и соотношение как часто читают/как часто пишут. Простой пример - список и массив, в список легко данные вставлять, из массива легко читать.

shaposhцелесообразным по умолчанию строить DESС-индекс для поля PK.

...и вот тут засада, добавление "самого большого" значения в DESC-индекс сильно дороже, чем в ASC-индекс
соотв. с добавлением "самого маленького" - наоборот

http://www.sql.ru/forum/1187963/pk-indeks-ascending-ili-descending

Поэтому если таблицу часто читают и намнооого реже пишут, то можно убрать PK и вместо него явно завести Unique-индекс.

Но это насколько я понял на практике сродни ловле блох и очень редко будет заметно: вычитывание индекса с диска в память в любом случае намного дольше, чем поиск в памяти по "неудобному" индексу, и поэтому ускорение второго шага почти никогда ничего не даст.
...
Рейтинг: 0 / 0
05.02.2016, 13:40
    #39163877
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Гаджимурадов Рустамно вас же не заставляют, делайте DESC.

заставляют. Сделать руками индекс для PK невозможно.

http://www.sql.ru/forum/1187963/pk-indeks-ascending-ili-descending
...
Рейтинг: 0 / 0
05.02.2016, 13:42
    #39163884
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Hello, Shaposh!
You wrote on 5 февраля 2016 г. 13:37:48:

Shaposh> "Мимопроходящему умнику" - Ты для разнообразия, хоть что-нибудь адекватное по теме...
зайко, тебе ж давно уже не 20, а жить в реальном мире так и не научился...
мечтай, мечтай
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:43
    #39163887
shaposh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Да я так и делаю. Но вопрос-то не во мне

Я предположил, что изменение направления построения ключа для ПК выглядит обоснованно, ибо имеет плюсы и не имеет минусов

Dimitr указал, что минусы есть - чуть меньшая производительность

Этого достаточно, чтобы получить заключение - действительно, данный вопрос должен решаться архитектором БД при создании PK-ключа
...
Рейтинг: 0 / 0
05.02.2016, 13:44
    #39163890
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Hello, Arioch!
You wrote on 5 февраля 2016 г. 13:44:09:

Arioch> заставляют. Сделать руками индекс для PK невозможно.
ADD CONSTRAINT ... PRIMARY KEY ... USING DESCENDING INDEX ...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:45
    #39163892
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Мимопроходящий,

тебе ссылку зачем дали? прочитай в ней ВТОРОЕ сообщение, а ?
...
Рейтинг: 0 / 0
05.02.2016, 13:46
    #39163897
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
ну или я Сибирякова не понял, странно что в той теме никто этого не упомянул
...
Рейтинг: 0 / 0
05.02.2016, 13:48
    #39163901
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Hello, Arioch!
You wrote on 5 февраля 2016 г. 13:47:39:

Arioch> тебе ссылку зачем дали?я не хожу по ссылкам.
ради тебя сделал исключение.
прочитал.

вывод: вася, ты лошара (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:49
    #39163905
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Arioch,

он говорил что в USING нельзя использовать существующий индекс, но зато создаётся новый с требуемым тебе направлением.
...
Рейтинг: 0 / 0
05.02.2016, 13:50
    #39163906
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
Arioch> Сделать руками индекс для PK невозможно.

Ты бред какой-то несёшь.

Код: sql
1.
2.
3.
alter table add constraint PK
primary key (ID)
using descending index SpecialForOpex



Ку ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.02.2016, 13:50
    #39163907
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умолчательное направление при построении индекса по PK
YuRockДля того, чтобы получить текущую (самую актуальную, самую свежую) какую-либо сущность.Причём тут значение суррогатного ПК ?

YuRockПолучить её можно (и нужно) с помощью SELECT MAX(ID)А я думал свежесть определяется датой, а актуальность - флагом состояния...
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Умолчательное направление при построении индекса по PK / 25 сообщений из 69, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]