tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

vysoká režie dibi u jednoduchých dotazů

před 8 lety

Peter
Člen | 12

Překvapuje mě, jak vysokou režii má dibi u triviálních dotazů, které ale pracuje s mnoho záznamy.
Takže například

<?php
dibi::fetchAll('SELECT col FROM table'); // vrátí stovky záznamů
?>

mi na lokálním stroji trvá kolem 20ms, zatímco stejná verze v php (mysql_query()) jen kolem 2ms, dibi kolem toho přílš tancuje a přitom si vystačim s jednoduchym polem.

Je nějaký jednoduchý způsob, jak to v dibi vyřešit, nebo mi nezbývá než forknout dibi a přidat něco jako dibi::rawQuery()?

Nebo ještě lépe použít PDO driver a v případě potřeby se ptát přímo PDO?

před 8 lety

HosipLan
Moderator | 4693

To je režie za „syntactic sugar“. Takže pokud potřebuješ něco jednoduššího, s nulovou bezpečností, tak klidně používej mysql_query() :)

Editoval HosipLan (26. 11. 2011 11:29)

před 8 lety

Peter
Člen | 12

No cukr to sice je, ale převod na DibiRow či hádání datových typů s bezpečností nemá nic společného, obvzláště u selectu. Takový věci jako přeložení sql dotazu (escapování, …) v tom hraje zanedbatelnou roli. Já hledám řešení rychlé a bezpečné. :)

před 8 lety

HosipLan
Moderator | 4693

Tohle bude rychlejší

/* @var IDibiResultDriver $resultDriver */
$resultDriver = $connection->getDriver()->query('SELECT col FROM table');
while ($row = $resultDriver->fetch(TRUE)) { // TRUE znamená, načíst associativní pole
    var_dump($row);
}

Ale proč používat knihovny, když věříš svým SQL, že je napíšeš bezchybně :)

před 8 lety

Peter
Člen | 12

Tys mě asi špatně pochopil, já psal, že překlad dotazu má v tom, tj. v rychlosti, zanedbatelnou roli — tedy sestavení SQL dotazu nechám na dibi, ale samotnej fetch chci udělat bez cukru…

takže kdybych lehce upravil tu tvou verzi:

<?php
$query = $connection->translate('SELECT col FROM table');
$resultDriver = $connection->getDriver()->query($query);
while ($row = $resultDriver->fetch(TRUE)) {
    var_dump($row);
}
?>

Vidíš v tom nějakou potencionální potíž (bezpečnostní, …)?

před 8 lety

HosipLan
Moderator | 4693

Je to víc psaní :) Ale pokud opravdu potřebuješ zrychlit, tak to chápu.

Editoval HosipLan (26. 11. 2011 12:08)

před 8 lety

Peter
Člen | 12

Super, děkuju. :)