In PHP + MySQL + PDO, wäre es viel langsamer ein Element ID namentlich Zwei Abfragen vs einer Abfrage, Performance
- Get als nur
- Get Artikeldaten nach Namen
Letzteres ist nur eine Abfrage, also offensichtlich schneller. Ersteres sorgt jedoch für einen saubereren Code (weil die ID des Artikels oft auch nur vorher bekannt ist), daher wäre es besser, wenn der Leistungsunterschied klein genug ist.
Der Code, wo ich dieses bin mit:
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'); } ... }
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; }
Unabhängig von den 'Referenzdaten' sollten Sie alle Informationen mit JOINS aus anderen Tabellen und Unterabfragen zusammenstellen können. Seht Dinge wie SELECT foo FROM bar WHERE foo IN an (SELECT baz FROM boo) –
Ich bin recht geübt in SQL, das ist nicht das Problem. Es ist nicht so, dass ich nicht weiß, was die einzelne Abfrage sein würde, aber dass es sich negativ auf mein Design auswirken würde. –