<rmcreative>

RSS

Все заметки с тегами «Yii, SQL»

Можно уточнить:

    (1)
    (1)
    (1)
  1. (1)
    (1)
    (1)
    (2)
  1. Удобная функция для тех, кто хочет использовать Yii и писать SQL

    21 июня 2012

    Использовать можно так:

    $posts = command('SELECT * FROM post WHERE id IN(%s)', array(1, 2, 3))->queryAll();
    foreach($posts as $post) {
      print_r($post);
    }
     
    $id = command('SELECT id FROM post WHERE name = %s AND status=%d', 'Alexander', 10)->queryScalar();
    echo $id;
     
    $post = command('SELECT * FROM post WHERE id = %d', 101)->queryRow();
    print_r($post);

    Читаем

    9 комментариев
  2. Расширение для анализа производительности SQL-запросов для Yii

    24 ноября 2011

    Хорошая вариация на тему профайлера SQL под Yii была выложена на днях Владимиром. Кроме списка самих запросов расширение выводит план выполнения запроса (EXPLAIN).

    Пробуем

    Комментировать
  3. Yii DB profiler

    14 сентября 2011

    Довёл до ума и выложил профайлер SQL-запросов для Yii.

    Основан на CProfileLogRoute, т.е. всё так же отображает данные внизу страницы. Отличий несколько:

    1. Показываются только SQL-запросы и ничего лишнего.
    2. Вместо общего времени выполнения и потребляемой памяти показываются время выполнения запросов и их количество.
    3. Умеет подсвечивать розовым проблемные запросы. Либо те, которые достаточно долго выполняются, либо те, которые выполняются много раз. Количество повторений и время выполнения настраиваются.

    Пользуемся

    20 комментариев
  4. Yii, получаем количество запросов к базе данных и общее время их выполнения

    14 сентября 2011

    list($queryCount, $queryTime) = Yii::app()->db->getStats();
    echo "Query count: $queryCount, Total query time: ".sprintf('%0.5f',$queryTime)."s";
    2 комментария
  5. Кеширование SQL-запросов в Yii

    11 февраля 2011

    Сегодня Qiang реализовал ещё одну интересную штуку для Yii: кеширование запросов к базе данных на всех уровнях от DAO до ActiveRecord.

    $sql = 'SELECT * FROM tbl_post LIMIT 20';
    // кешируем результат запроса 1000 секунд
    $rows = Yii::app()->db->cache(1000)->createCommand($sql)->queryAll();

    Если данные в таблице меняются, можно попробовать инвалидировать кеш, используя менее затратный запрос:

    $sql = 'SELECT * FROM tbl_post LIMIT 20';
    // сбрасываем кеш, если результат изменился
    $dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
    // кешируем на 1000 секунд
    $rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();

    С AR это работает так:

    $posts = Post::model()->cache(1000)->findAll();
    $posts = Post::model()->cache(1000)->with('author')->findAll();

    Опробовать можно, забрав код из SVN. Войдёт в релиз 1.1.7.

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