sql >> Database teknologi >  >> RDS >> Sqlserver

Hibernate Query kører langsomt i systemet, men hurtigt, når det køres direkte

Ud fra beskrivelsen af ​​dit problem lyder det som om du løber ind i parametersniffing. Grundlæggende opretter SQL Server en forespørgselsplan baseret på et ældre sæt parameterværdier, der blev sendt ind, og som ikke opretter en effektiv eksekveringsplan for den aktuelt kørende forespørgsel.

Typisk løser jeg dette problem ved at overføre parameterværdierne til lokale variabler og bruge dem i min forespørgsel eller ved at bruge OPTION (RECOMPILE). Men da du bruger Hibernate, er min sædvanlige løsning ikke en mulighed for dig. Som jeg forstår det, vil den bedste mulighed være at bruge Hibernate til at køre en indbygget SQL-forespørgsel ved hjælp af prepareStatement() eller createSQLQuery(), som desværre fjerner nogle af fordelene ved at bruge Hibernate.



  1. Søg efter hele ord match i MySQL

  2. hvis (vælg antal(kolonne) fra tabellen)> 0 så

  3. Returnerer en Min() og et andet felt?

  4. Mysql bliver ' til ’?