Архив

Публикации с меткой «MySQL»

MySQL оптимизация. NOT NULL.

27 Апр 2010

mysql
В данной заметке хочу обратить (в первую очередь свое) внимание на один из важных моментов, влияющих на производительность при выполнении SQL-запросов:

При создании таблиц в базе данных,
поля всех типов желательно объявлять как NOT NULL!

Это немного экономит память, и главное – увеличивает скорость выполнения запросов. Улучшение производительности происходит из-за того, что СУБД не проверяет такие поля на предмет наличия пустых значений. Таким образом, уменьшается время анализа таблиц. Т.е. просто необходимо объявить поле, как непустое, задать значения по умолчанию (например, «» – для символьных, 0 – для числовых, ‘0000-00-00 00:00:00′ – для даты и времени и т.п.) и радоваться жизни.
Типы полей BLOB и TEXT не могут содержать значения по умолчанию.
Так же не рекомендуется индексировать поля, которые не объявлены, как NOT NULL.

MySQL ,

CodeIgniter. Как посмотреть выполненные sql-запросы.

25 Мар 2010

Очень просто! :)

Если быть кратким, то:


//выполненные запросы:
print_r($this->db->queries);
//время выполнения запросов:
print_r($this->db->query_times);

А далее можно использовать эти массивы как необходимо. Сделать временные print_r() для отладки или оформить красивый вывод результатов в админ. части сайта.
Обратите внимание, что данные массивы будут пусты, если


$this->db->save_queries = FALSE; //(по умолчанию TRUE)

Читать полностью…

CodeIgniter , ,

MySQL – массовое добавление записей (bulk insert)

30 Сен 2009

В MySQL существует синтаксис, позволяющий делать добавление множества записей одним SQL-запросом.
Т.е. например, вместо n запросов


insert into table_name (id, val) values(1,1);
insert into table_name (id, val) values(1,2);
insert into table_name (id, val) values(1,3);
...........................................
insert into table_name (id, val) values(1,n);

можно выполнить один запрос:


insert into table_name (id, val) values(1,1),(1,2),(1,3),…(1,n)

Читать полностью…

MySQL ,