Архив за месяц: Май 2011

MySQL: Забавные находки UPDATE+ORDER

logo-mysql-110x57 Вот уж не думал что в операторе UPDATE можно использовать ключевое слово ORDER. И никогда не думал, что такое мне пригодится!

Вот пример. Мне нужно сделать такой запрос:

UPDATE t SET id = id + 1;

Как ни странно запрос вызовет ошибку уникальности первичного ключа. Проблема в том, что апдейт делается последовательно для всех записей, а не сразу всех.

Вылечить проблему можно задав порядок апдейта с помощью ключевого слова ORDER.

UPDATE t SET id = id + 1 ORDER BY id DESC;

Дьявольски редко пригождающаяся вещь! Но иногда и палка стреляет.

Тормоз закрывает свои проекты (или нет)

Конец чего-то одного - почти всегда начало чего-то другого Не так давно я прикупил рекламный движок Даос от Тормоза. Да, я писал об этом. О финансовых результатах говорить не хочу, ибо они и не должны были стать космическими на этом блоге. Движок брался не совсем для этого.

Но то что такой интересный проект заканчивается — это грустно. Что там случилось у Тормоза — даже не знаю. Полагаю, что это просто смена образа жизни. В некотором плане это даже хорошо, это развитие. Надеюсь жизни и здоровью ничего не угрожает — а остальное всё наживное.

Тормоз, если ты это читаешь — я в любом случае желаю тебе успехов в любом деле, за которое бы не брался. И здоровья! Здоровья нужно много.

Kohana. Ускоряем ORM

kohanaШтатный ORM у Kohana практически на каждое шевеление создаёт запрос «SHOW CREATE TABLE blablabla«.

Я как-то не придавал этому значения раньше, но похоже этот запрос довольно ёмкий по времени, у меня он почему-то занимает до пол-секунды в плохую погоду (погода зависит от текущей загрузки хостинга). А если страница пестрит обращениями к БД, которые делаются через ORM, то ждите того, что треть запросов будет именно «SHOW CREATE TABLE«.

Как бы сделать так, чтобы ORM так не делал? Ведь структура таблиц работающего сайта практически не меняется годами!

Решение простое! Нужно немного переопределить метод list_columns класса ORM так, чтобы он кешировал структуру таблицы и дважды не бегать.
Читать далее