Size: a a a

2021 October 05

EG

El Grizlo in MySQL
Парни, спасибо что вы есть! 👍
источник

IZ

Ilia Zviagin in MySQL
Там есть одно обстоятельство про автоинкрементный PK.
В MySQL (и SQLServer и во многих других РСУБД) таблицы хранятся в виде кластерного индекса по PK.
Это делает достаточно дорогими вставки в "центр" таблицы - надо раздвигать дерево, не полностью заполняются
индексные страницы, теряется высокая плотность данных, растёт IO при чтении.

Поэтому рекомендуют делать PK монотонно возрастающими во времени, в процессе добавления новых данных.
Тогда типа почти всегда добавление идёт в последнюю страницу данных и всё как бы чики-пики.
Один из видов таких индексов - это автоинкрементное поле, или identity, как ещё его называют (или sequence)

Вот именно его и рекомендуют применять для PK, тем более это удобно в проектировании, ибо естественных ключей почти никогда не бывает и автоинкремент вытекает ещё и из этого обстоятельства.

Так что вот так...
источник

YN

Yevhen Nedaskivskyi in MySQL
В SQL Server и PostgreSQL есть параметр FILLFACTOR, который позволяет заполнять страницы не полностью, чтобы операции вставки "в центр таблицы" были не такими медленными.

В MySQL запрос на добавление этого функционала висит ещё с 2006 года, так и не сделали:

https://bugs.mysql.com/bug.php?id=18178
источник

YN

Yevhen Nedaskivskyi in MySQL
Или таки сделали?
источник

YN

Yevhen Nedaskivskyi in MySQL
источник

IZ

Ilia Zviagin in MySQL
Я не очень в курсе...
источник

IZ

Ilia Zviagin in MySQL
(вообще, проблему считаю надуманой)
источник

YN

Yevhen Nedaskivskyi in MySQL
Скорее не надуманной, а специализированной. Большинство ДБА её не увидит. Но для кого-то это может быть реальная головная боль
источник

C

Combot in MySQL
Мариночка has been banned! Reason: CAS ban.
источник

V

Victor in MySQL
напомните конструкцию чтоб запрос не писался в бинлог
источник

V

Victor in MySQL
https://dev.mysql.com/doc/refman/8.0/en/set-sql-log-bin.html чисто на всякий случай может кому понадобиться
источник

IZ

Ilia Zviagin in MySQL
select 42
источник

V

Victor in MySQL
ну начинается ) просто я сегодня не взял полотенце )
источник

IZ

Ilia Zviagin in MySQL
А зря, нужно всегда знать, где твоё полотенце.
источник

V

Victor in MySQL
знать то знаю )))) но не взял )))) кстати вроде в мае день полотенца
источник

s

svart in MySQL
Все зависит от объемов данных и вставок. В теории auto-inc всегда или почти всегда лучше, но на практике, если у вас таблица с 1М строк и десятью вставками в день, то вам можно и вин использовать как pk
источник

s

svart in MySQL
Ага, есть для bulk insert. Я прям 20 лет ждал эту фичу
источник
2021 October 06

ls

løst søul in MySQL
сто лет как сделали, и мария ее скорее всего унаследовала
источник

S

Serega in MySQL
Доброго времени суток.
Подскажите пожалуйста синтаксис как найти и заменить несколько значений

UPDATE oc_product SET length_class_id = REPLACE(length_class_id, '1', '4');
'1', '4'); - нужно найти несколько значений например найти - 111, 222, 333 Заменить на 444, 555, 666
Спасибо
источник

V

Vitaly in MySQL
UPDATE table_users
   SET cod_user = (case when user_role = 'student' then '622057'
                        when user_role = 'assistant' then '2913659'
                        when user_role = 'admin' then '6160230'
                   end),
       date = '12082014'
   WHERE user_role in ('student', 'assistant', 'admin') AND
         cod_office = '17389551';
источник