Точный поиск, реализуемый в базах данных это очень хорошо, когда дело касается точных фраз. Но что делать, когда надо найти нечёткое соответствие — когда среди документов есть Киевская карта но нету Карты Киева? Надо окунаться в текст и язык. Любое сообщение на естественном языке можно рассматривать по глубине и этим занимаются разные разделы […]
Рубрика: Статьи чтобы набрать классы
Полнотекстовый межтабличный поиск для InnoDB
Предлагаю решить интересную SQL-задачу. Думаю у среднего девелопера она займёт пол часа или больше (я же сразу спросил у SQL-гуру). Возникла интересная задача при переходе с MyIsam на InnoDB. Как известно, полнотекстовый поиск у последнего движка отсутсвует, поэтому было два решения — делать обычное зеркало на MyIsam где был бы […]
Возраст и день рождения через SELECT
Иногда хочется быстро вычислить сколько дней до дня рождения пользователя. Вы все видели это в Одноклассниках и ЖЖ. Это можно делать в запросе например таким образом для mysql 5 SELECT TIMESTAMPDIFF(YEAR,users.birth_date,NOW()) years_old, TIMESTAMPDIFF(DAY, NOW(), DATE_ADD(users.birth_date, INTERVAL 1+TIMESTAMPDIFF(YEAR,users.birth_date,NOW()) YEAR)) next_birth_days FROM users Нашёл в своём стареньком коде, может кому полезно будет..
Mysql rownum
Есть таблица меню в БД с полем порядка order_id, но порядок неправильный и надо порядок обновить по алфавиту другого поля title. Сортировка по полю title исключается, потому что таблица представляет из себя иерархическое меню, где порядок может менять пользователь устанавливая order_id. Использовать отдельно серверную обработку (php) тоже невыгодно — лишнее разделение […]
Mysql prepared statements
Подготовленные запросы имеются в MySQL начиная с 4.1 и нужны по трём причинам. Скорость. Если вы выполняете однообразные запросы, то mysql парсеру каждый раз приходится выполнять распознавание — какой тип запроса, какие данные передаются и тому подобное. Если сделать прототип запроса, а в последствии передавать только данные, то ясное дело […]
Random order в Postgre
Как-то я писал о том как быстро можно сделать выборку в MySQL по большой таблице в случайном порядке не используя ORDER BY RAND(), теперь этот же вопрос всплыл на Postgre. Если вы не знаете, то ORDER BY RAND достаточно медленная операция из-за того, что сортируется фактически вся таблица. Некоторые советовали всё-таки обычную сортировку или […]
Случайная сортировка
Mysql позволяет сортировать случайным образом SELECT * FROM my_table ORDER BY RAND() Проблема в том, что такая сортировка зачастую вовсе не нужна для всей выборки — хочется просто достать случайный элемент из определённого множества, к тому же ORDER BY RAND() достаточно медленный выход из ситуации.
Mysql import/export
Экспорт БД через shell mysqldump -uroot -ppass base > dump.sql Импортировать данные из sql файла в mysql как известно можно несколькими путями. Первый вариант — закачать файл и через консоль обратится напрямую к демону для импортаmysql -uroot -ppass base < dump.sql
Замена данных одного ряда таблиц Mysql
В MySQL есть два расширения, которые позволяют атомарно вставить или обновить запись. Годятся они для штук с довольно высокой нагрузкой, когда без блокировок не работает типичный сценарий: Выбрать запись. Если выбралась — обновить. Если пусто — вставить.
Агрегирование выборки в MongoDB + PHP
MongoDB — очередное веяние моды в веб-разработке, когда хранение данных заранее планируется таким огромным, что необходимо их распределение на несколько серверов с помощью шардирования. Поизучаем же непростой синтаксис агрегирования данных в mongo + php