Notes
SQL highload tricks
Почему varchar поле делают длинной 255, а не 256?
В документации MySQL написано:
В столбце используется один байт длины, если для значений требуется не более 255 байтов, и два байта длины, если для значений может потребоваться более 255 байтов.
Это значит именно "256-1" и "1024-2".
Тем не менее для хранения значения "hello" требуется одинаковое количество места в столбце VARCHAR(5) и VARCHAR(200). Есть ли какое-то преимущество в использовании более короткой колонки?
Но в книге "High performance mysql 2" сказано `да`:
The larger column can use much more memory,
because MySQL often allocates fixed-size chunks of memory to hold values internally.
This is especially bad for sorting or operations that use in-memory temporary
tables. The same thing happens with filesorts that use on-disk temporary tables.
The best strategy is to allocate only as much space as you really need.
Ссылки:
- varchar(255) - https://www.sql.ru/forum/1009340/varchar-255?mid=14048888#14048888
- 11.3.2 The CHAR and VARCHAR Types - https://dev.mysql.com/doc/refman/8.0/en/char.html
- High performance mysql second edition - http://ekimoff.ru/download/high-performance-mysql-second-edition.pdf
NOT IN не использует ключей в отличие от IN
во всем коде перепишите запросы "NOT IN" на "IN"
Ссылки:
- Antijoin in MySQL 8 - https://mysqlserverteam.com/antijoin-in-mysql-8/
Афоризм дня:
Молодые люди плохо знают, что такое красота: им знакома только страсть. (542)
Leave a reply