Для бэкапа и импорта данных пользуюсь очень простым и быстрым php-скриптом с удобным интерфейсом. Sypex Dumper справляется с таблицами в сотни тысяч записей, в отличие от того же phpMyAdmin или других оконных менеджеров для работы с БД. Про консоль mysql я сейчас не говорю.
В MySQL есть достаточное количество встроенных функций и фич, которые упрощают код. К сожалению, не все программисты знают об этом и используют свои «велосипеды». читать дальше →
Любой web-программист сталкивался с постраничным выводом информации. Например, в таблице лежит 1000 новостей и нужно выводить их по 10 штук на странице, а внизу вывести листалку страниц.
Программист пишет 2 запроса:
1) SELECT * FROM news WHERE activity=1 LIMIT 0, 10 // выборка записей 2) SELECT COUNT(*) FROM news WHERE activity=1// узнаем кол-во всех новостей
Второй запрос нужен для вывода листалки. Однако в MySQL есть достаточно удобная возможность объединения этих двух запросов в один. подробнее про SQL_CALC_FOUND_ROWS
Вышло 2-ое издание книги High Performance MySQL. Во-первых книга была почти целиком переписана. Во-вторых ее также можно назвать книгой сообщества, поскольку авторы собрали вместе официальные, а также просто используемые сообществом средства, чтобы объяснить на их примере как работает MySQL. Многие из тем также обсуждались в комьюнити: оптимизация и индексирование, масштабируемость, расширенные возможности SQL, производительность. Кроме того, в книге авторы обясняют как писать технические книги.
скачать High Performance MySQL, Second Edition (англ, pdf)
Задача: выбрать 5 случайных активных пользователей из таблицы user
Решение:
SELECT userid, user_name FROM user WHERE activity=1 ORDER BY RAND() LIMIT 5
ORDER BY RAND() - удобная конструкция для выборки случайных записей из таблицы. Она не очень быстрая, но удобная в случае выборки более одной случайной записи, и для небольших таблиц то, что доктор прописал. Для таблицы 20 000 записей вышеприведенный запрос занимает 0.02 с.
Вот такой интересный способ выбора случайной записи встречается иногда :-)
$res = mysql_query(‘SELECT userid, user_name FROM user WHERE activity=1’); $j = rand(1,mysql_num_rows($res)); $i=1; while($row=mysql_fetch_array($res)){ if($i==$j){ break; } $i++; }
Сделали социальную сеть по Ростехнадзору на основе 3-51 за 2 недели. Ресурс создан для общения экспертов по промышленной безопасности, работников Ростехнадзора и МЧС РФ, поставщиков оборудования и всех, кто интересуется вопросами промышленной безопасности.
Теперь вкратце на чем работает сайт:
- PHP (ООП)
- MySQL (InnoDB)
- Perl – отправка почты
- шаблонизатор Blitz
- библиотека DbSimple – интерфейс к БД
- библиотека JsHttpRequest – Ajax (в будущем перейдем на jQuery)
Условия:
- адреса должны быть активными
- сбор адресов должен быть автоматизированным
- количество адресов должно быть достаточным (более 100 000)
- формат спам-листа: таблица в MySQL