
В данной заметке хочу обратить (в первую очередь свое) внимание на один из важных моментов, влияющих на производительность при выполнении SQL-запросов:
При создании таблиц в базе данных,
поля всех типов желательно объявлять как NOT NULL!
Это немного экономит память, и главное – увеличивает скорость выполнения запросов. Улучшение производительности происходит из-за того, что СУБД не проверяет такие поля на предмет наличия пустых значений. Таким образом, уменьшается время анализа таблиц. Т.е. просто необходимо объявить поле, как непустое, задать значения по умолчанию (например, «» – для символьных, 0 – для числовых, ‘0000-00-00 00:00:00′ – для даты и времени и т.п.) и радоваться жизни.
Типы полей BLOB и TEXT не могут содержать значения по умолчанию.
Так же не рекомендуется индексировать поля, которые не объявлены, как NOT NULL.
MySQL
MySQL, NOT NULL
Очень просто!
Если быть кратким, то:
//выполненные запросы:
print_r($this->db->queries);
//время выполнения запросов:
print_r($this->db->query_times);
А далее можно использовать эти массивы как необходимо. Сделать временные print_r() для отладки или оформить красивый вывод результатов в админ. части сайта.
Обратите внимание, что данные массивы будут пусты, если
$this->db->save_queries = FALSE; //(по умолчанию TRUE)
Читать полностью…
CodeIgniter
CodeIgniter, MySQL, SQL
В 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
insert, MySQL