Записи по тегу: оптимизация

Уроки SQL. Сжимаем три запроса в один.

18 комментариев

Очень часто любому разработчику приходится сталкиваться с такой ситуацией:

  • Проверить существует ли определенная запись в таблице.
  • Если такой записи нет, то добавить ее
  • Если запись уже существует, то изменить ее

Начинающий программист решит эту задачу в три запроса, приблизительно так:

$result=mysql_query("SELECT * FROM `logs` WHERE `ip`='".$ip."'");

if(mysql_num_rows($result)==0){
	mysql_query("INSERT INTO `logs` (`ip`, `data`) VALUES ('".$ip."', '".$data."')");
}else{
	mysql_query("UPDATE `logs` SET `data`='".$data."' WHERE `ip`='".$ip."'");
}

Ну а не начинающий знает о конструкции

INSERT ... ON DUPLICATE KEY UPDATE ...

Что дает такая конструкция помимо краткости записи? Она дает выйгрыш в скорости! Тесты под катом.
Читать далее →

Сортировка многомерных массивов по ключу на PHP

35 комментариев

Практически перед каждым PHP-программистом становится задача отсортировать многомерный массив. К примеру вот такой вот:

$data=array(
	array('text'=>'str1', 'year'=>'2010', 'author'=>10),
	array('text'=>'str2', 'year'=>'2011', 'author'=>10),
	array('text'=>'str3', 'year'=>'2009', 'author'=>20),
	array('text'=>'str4', 'year'=>'2010', 'author'=>30),
	array('text'=>'str5', 'year'=>'2010', 'author'=>20),
	array('text'=>'str6', 'year'=>'2011', 'author'=>10),
	array('text'=>'str7', 'year'=>'2011', 'author'=>20),
	array('text'=>'str8', 'year'=>'2009', 'author'=>20),
);

По, допустим, ключу year, как же сделать это грамотно?

Читать далее →