Записи с тегом «MySQL»
Генерация тестовых данных средствами MySQL
Средства генерации тестовых данных встроены во многие утилиты для работы с БД, существует большое количество сторонних и даже он-лайн инструментов. Конечно, набор реальных тестовых данных ничто не заменит, но для случая «нагенерить чего-нибудь да по-больше» можно обойтись и встроенными возможностями MySQL.
Выборка последних записей из большой таблицы
К примеру, в MySQL БД есть такая таблица:
`log` ---------- `id` (номер записи в логе) `inserted` (дата и время события) `message` (описание события) `user_id` (вторичный ключ на таблицу пользователей `users`)
По логике приложения важным является выбрать последние записи из этой таблицы для каждого пользователя и вывести их на страницу. Сообщений в между очисткой/архивацией таблицы собирается много (до полумиллиона). Конечно можно сохранять в отдельную таблицу интересующие записи, но есть решение и на чистом SQL (работающее до определённого количества записей, конечно :)).
Проверка на существование добавляемого в таблицу поля в MySQL
Для программы обновления понадобилось написать SQL-скрипт, который проверял бы перед добавлением нового поля в таблицу, не было ли такое поле добавлено ранее. В MySQL для подобных целей необходимо использовать хранимую процедуру, которая после использования удаляется. Оригинал решения дополнен автоматическим определением названия текущей БД.
Определить на какой странице пейджинга окажется запись (ROW_NUMBER() в MySQL)
В процессе разработки приложения понадобилось с помощью SQL-запроса к MySQL-базе определить на какой странице пейджинга окажется определённая запись. Ситуация осложнялась тем, что записи могли быть отсортированы по разному.
Префиксы для баз данных и имён пользователей MySQL в ISPManager
Для того, чтобы к имени базы данных добавлялся префикс в виде <имя системного пользователя>_,
необходимо добавить в ispmgr.conf опцию:
Option DatabasePrefix
Чтобы включить добавление подобного префикса к именам MySQL-пользователей необходима следующая опция:
Option DatabaseUserPrefix
Варианты соглашений по именованию объектов в БД
Несколько разных схем именования объектов в БД. Для примера будет взята база гипотетического блога, хранящая информацию о следующих сущностях: записях (posts), категориях (category) и пользователях (users). Один пост может попадать в одну или несколько категория (связь many-to-many), у одного поста всегда один автор (связь one-to-many).
Общее количество записей, возвращаемых запросом с LIMIT в MySQL
Для реализации пейджинга в веб-приложениях обычно необходимо узнать общее количество записей, возвращаемых определённым запросом.
Для некоторых баз данных для этого приходится делать ещё один запрос с COUNT()
Небольшая оптимизация записи JOIN в MySQL
Eсли поля, по которым осуществляется JOIN названы одинаково в обоих таблицах, то для обоих типов JOIN'a (INNER и OUTER), можно упростить запись.
