sql >> Databasteknik >  >> RDS >> Oracle

dålig Hibernate välj prestanda jämfört med körning direkt - hur felsöka?

Tack alla för hjälpen. Efter lång tids kämpande med det problemet, hjälpte kaliatechs svar mig till slut att felsöka problemet.

Först och främst har jag gjort ett fruktansvärt misstag i min fråga. Jag skrev att:

Att köra den här frågan med lokal databas är väldigt snabbt, men att använda den på distans är riktigt dålig.

Eftersom det inte är helt sant. Frågan som jag gjorde i Hibernate ser ut som den uppe:

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

Men den faktiska frågan som jag gjorde med SQL PLus eller Navicat till exempel var:

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

Observera att första frågeval börjar:select s.* ... och den andra är select * ... . Och det var anledningen till så dåliga prestationer. Nu är båda frågorna klara på nolltid. Frågan är vad som är skillnaden:prestandaproblem:skillnaden mellan välj s.* och välj *



  1. Autentiseringsplugin 'caching_sha2_password' stöds inte

  2. PostgreSQL-replikering för katastrofåterställning

  3. Är SELECT eller INSERT i en funktion utsatt för tävlingsförhållanden?

  4. Vilka är de olika sätten att infoga data i SQL Server Table - SQL Server / TSQL Tutorial Del 100