İki sorguları vs bir sorgu, performans

2 Cevap php

PHP + MySQL + PDO'de bunu yapmak için çok daha yavaş olur

  • Adıyla bir öğenin kimliğini alın
  • Kimliği göre madde veri alın

sadece daha

  • Adıyla öğe veri alın

İkincisi yani Açıkçası daha hızlı, tek bir sorgu. Olsa temiz kod için eski yapar (öğenin kimliği çoğu zaman da sadece önceden bilindiği için), bu yüzden performans farkı kadar küçük olursa daha iyi olurdu.

Bunu kullanıyorum kodu:

public function actionView () {

    // read http request
    ...

    // get item
    $itemModel = new Rust_Model_Item();
    try {
        $id = $itemModel->getItemIdByUrlTitle($urltitle);
        $item = $itemModel->getItem($id); // lots of data
    } catch (Rust_Model_Item_NotFoundException $e) {
        throw new FastMVC_Web_Error(404, 'Item not found');
    }

    ...

}

http://code.heukelom.net/filedetails.php?repname=rust&path=%2Ftrunk%2Flib%2Fclasses%2FRust%2FController%2FItem.php

public function getItem ($ id) {

    $item = $this->getItemBasics($id);

    $catModel = new Rust_Model_Category();
    $item['category'] = $catModel->getById($item['category_id']);

    $ratingModel = new Rust_Model_Rating();
    $item['rating'] = $ratingModel->getForItem($id);

    $pageModel = new Rust_Model_Page();
    $item['pages'] = $pageModel->getListForItem($id);

    $tagModel = new Rust_Model_Tag();
    $item['tags'] = $tagModel->getForItem($id);

    return $item;

}

http://code.heukelom.net/filedetails.php?repname=rust&path=%2Ftrunk%2Flib%2Fclasses%2FRust%2FModel%2FItem.php

2 Cevap

Eğer WHERE yan kullanabileceğiniz alanları doğru tuşları ve set-up onlara indeksleri böylece sorgu tasarım ve sadece onları seçmek için bir sorgu kullanmanız gerekir.

Neden kimliği üzerinde bir dizin koyarak, id tarafından madde verileri alır, tek bir sorgu oluşturmak değil.