Как связать таблицы MySQL в phpMyAdmin

Опубликовано: 16.06.2017

видео Как связать таблицы MySQL в phpMyAdmin

Кардинальность в базе данных

Если гласить обычным языком, то запросы к MySQL условно можно поделить на 2 типа - операции подборки и операции обновления. К первым относятся операции SELECT, ко вторым - UPDATE, INSERT, DELETE. Достаточно много инфы по этому поводу есть в официальной документации, а так же в русском комьюнити. Но если в официальной документации обычно описывается как верно использовать индексы и составлять правильные запросы, то в рамках этой статьи мне бы хотелось поведать о личном опыте того, как можно улучшить "всё и разом" если более разумно подойти к организации хранения собственных данных и выборе типов данных.



Хоть какой разработчик в курсе, что главным слабеньким звеном в доступе к данным являются дисковые операции. Конкретно количество дисковых операций, нужных для выполнения запроса, в главном и оказывает влияние на скорость выполнения этого запроса. И если на конкретные операции чтения/записи к самим данным мы воздействовать не можем, то мы можем просто воздействовать на операции предыдущие им - а конкретно операции с индексами. Конкретно индексы позволяют движку MySQL практически впрямую получать ячейку где хранятся требуемые данные, а не находить их используя fullscan по всему файлу с данными. Вот поэтому хоть какой опытнейший программер и админ работающий с базами данных произнесет что индекс должен помещаться полностью в память, чтобы исключить излишние дисковые операции. В MySQL за размер буффера для хранения индекса отвечает системная переменная key_buffer_size. Но нескончаемо его наращивать не получится - в железе есть ограничение по наибольшему количеству ОЗУ, а вот ограничения по наибольшему размеру таблиц в базе данных достаточно далековато выходят за рамки обыденных жестких дисков, потому для нас они практически нескончаемы. И в какой-то момент появляется неувязка выхода размеров индекса за рамки key_buffer_size что приводит к резкому понижению скорости выполнения запросов.


Базы данных для начинающих. Внутренние индексы SQL таблицы. Таблицы WITHOUT ROWID в SQLite.

Уменьшить размер индексов можно по нескольким фронтам: Удалить неиспользуемые индексы Уменьшить размер целочисленных индексов Улучшить хранение строковых индексов Разглядим каждое из направлений подробнее:

Сначала стоит осознавать что в одной операции сопоставления на одной таблице может очень употребляться едва один индекс. К примеру в запросе