Oznámení
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. :)