sql >> Databáze >  >> RDS >> Oracle

špatný výběr výkonu Hibernate ve srovnání s přímým spuštěním - jak ladit?

Děkuji všem za pomoc. Po dlouhé době, kdy jsem se s tím problémem potýkal, mi konečně odpověď kaliatech pomohla problém odladit.

Za prvé, ve své otázce jsem udělal hroznou chybu. Napsal jsem to:

Spuštění tohoto dotazu s lokální databází je opravdu rychlé, ale použití na dálku je opravdu špatné.

Protože to není úplná pravda. Dotaz, který jsem udělal v Hibernate, vypadá jako ten nahoře:

select s.* from sales_unit s left join sales_unit_relation r on (s.sales_unit_id = r.sales_unit_child_id) where r.sales_unit_child_id is null

Ale skutečný dotaz, který jsem provedl například s SQL PLus nebo Navicat, byl:

select * from sales_unit s left join sales_unit_relation r on (s.sales_unit_id = r.sales_unit_child_id) where r.sales_unit_child_id is null

Všimněte si, že první výběr dotazu začíná:select s.* ... a druhý je select * ... . A to byl důvod tak špatného výkonu. Nyní jsou oba dotazy dokončeny během okamžiku. Otázkou je, jaký je rozdíl:problém s výkonem:rozdíl mezi select s.* a select *



  1. Přístup ke vzdálené databázi mysql z příkazového řádku

  2. Identifikace struktury kusovníku (BOM) v databázích

  3. Vygenerujte n řádků NULL v PostgreSQL

  4. Jak zřetězit hodnoty řetězce a NULL na serveru SQL Server