Для бэкапа и импорта данных пользуюсь очень простым и быстрым php-скриптом с удобным интерфейсом. Sypex Dumper справляется с таблицами в сотни тысяч записей, в отличие от того же phpMyAdmin или других оконных менеджеров для работы с БД. Про консоль mysql я сейчас не говорю.

В MySQL есть достаточное количество встроенных функций и фич, которые упрощают код. К сожалению, не все программисты знают об этом и используют свои «велосипеды». читать дальше →

SQL_CALC_FOUND_ROWS

Любой 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

High Performance MySQL, Second Edition Вышло 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 недели. Ресурс создан для общения экспертов по промышленной безопасности, работников Ростехнадзора и МЧС РФ, поставщиков оборудования и всех, кто интересуется вопросами промышленной безопасности.

Теперь вкратце на чем работает сайт:

  1. PHP (ООП)
  2. MySQL (InnoDB)
  3. Perl – отправка почты
  4. шаблонизатор Blitz
  5. библиотека DbSimple – интерфейс к БД
  6. библиотека JsHttpRequest – Ajax (в будущем перейдем на jQuery)

Условия:

  • адреса должны быть активными
  • сбор адресов должен быть автоматизированным
  • количество адресов должно быть достаточным (более 100 000)
  • формат спам-листа: таблица в MySQL

приступаем?

английский язык для начинающих
Ашманов Египет Москва РХТУ Россия США Снежинск Таиланд Тушино Урал Челябинская область Яндекс алкоголь английский язык баги база данных безопасность бизнес блоги взлом видео выставка выходные горные лыжи дайвинг дауншифтинг допинг идеи идиотизм инвентарь интернет книги кэширование мозг музей ноутбук образование оптимизация отдых отпуск пароль плагин пора сваливать программирование программисты путешествия работа работоспособность радиация реклама самогоноварение собеседование социальные сети спам стартап статистика страны тайм-менеджмент техника учеба фантастика фото фриланс хакер экология электронные деньги юмор Ajax CMS DbSimple DDOS email FireFox Google honda htaccess HTML javascript jQuery life md5 MySQL PHP SEO soft SQL vkontakte Web web 2.0 wordpress