Pomalý DataGrid – jak optimalizovat DataSource?
- Kurtas
- Člen | 109
Ahoj,
povedlo se někomu optimalizovat DataGrid resp DataSource? S nette začínám, dva dny se s*ru abych rozchodil DataGrid na aktuální verzi Nette 2.0 + php 5.3 … nakonec to rozchodim a když to nasadim na reálná data (tabulka s 630 000 záznamy) tak je to jako mrtvola :( … Nemá někdo verzi bez DataSource přes klasické dibi::query?
Zase budu mít noční můry :)
PS: už se to nakouslo zde bohužel do tohoto vlákna nelze přispívat, tak zakládám nové. Potřeboval bych řešení pro MySQL
dík Míra
- Kurtas
- Člen | 109
Díky moc DibiFluent šlape skvěle, jen ale přestalo fungovat filtrování záznamů nějak to špatně skládá SQL dotazy … při filtrování nad CheckboxColumn to padne na vyjímku DibiDriverException #1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‚NULL OFFSET 0‘ at line 1
TextbocColumn filtruje ok, SelectboxColumn nepadá na vyjímku ale nefiltruje :)
Zítra na to mrknu, snad to rozlousknu nebo případně pokud to někdo řešil budu rád za nakopnutí :)
- Kurtas
- Člen | 109
Tak jsem našel pár chybek v DataGridu (1.0-aplha-86) při použití
DibiFluent jako datasource.
Pokud někomu nefunguje filtrovaní stačí opravit v Fluent.php
metoda reduce- u LIMIT parametru misto NULL dát 0
public function reduce($count, $start = 0)
{
if ($count == NULL || $count > 0) { //intentionally ==
$this->df->limit($count == NULL ? 0 : $count);
} else throw new \OutOfRangeException;
if ($start == NULL || ($start > 0 && $start < count($this))) {
$this->df->offset($start == NULL ? 0 : $start);
} else throw new \OutOfRangeException;
return $this;
}
Dále špatně se skládal or misto ( sloupec = $value or sloupec IS NULLL ) to posílalo sloupec = $value or sloupec IS NULLL, takže při filtrování s více sloupci to blbo.
opravit metodu filter kolem řádku 81 $this->df->where(‚( %or )‘, $conds);
} elseif ($chainType === self::CHAIN_OR) {
$this->df->where('( %or )', $conds);
}
Editoval Kurtas (10. 8. 2011 9:26)
- norbe
- Backer | 405
Bylo by lepší, kdyby jsi vytvořil patch. Nemusíš kvůli tomu nic
instalovat. Stačí jen přejít v githubu na soubor
Fluent.php a tam kliknout na tlačítko
Fork and edit this file
, kód upravíš a zašleš žádost
o zanesení změn…