sql >> Database >  >> RDS >> Oracle

Waarom wordt de uitvoeringstijd van de opgeslagen procedure in Oracle aanzienlijk verlengd, afhankelijk van hoe deze wordt uitgevoerd?

Probeer nls-parameters uit uw verschillende gevallen (ide's of java-programma's) te halen, ze moeten anders zijn

select * from NLS_SESSION_PARAMETERS

Stel vervolgens binnen uw winkelprocedure de variabelen in om ze gelijk te maken aan het snelste geval.

  execute immediate 'alter session set NLS_SORT=''SPANISH''';

Zodra je SP alle nls-parameters hebt. Het zal snel werken.

Ik heb onlangs een soortgelijk geval gevonden in Alter-sessie vertraagt ​​de query via Hibernate . maar in hun geval veranderden ze de parameters en werden toen traag.

Ik onderzocht en ontdekte dat de parameters NLS_COMP y NLS_SORT van invloed kunnen zijn op hoe orakel gebruik maakt van plan uitvoeren voor string (wanneer het vergelijkt of bestelt)

Wanneer NLS_COMP is gedefinieerd als LINGUISTIC, zal het de taal gebruiken die is gedefinieerd in NLS_SORT.

bijvoorbeeld, als NLS_COMP =LINGUISTIC en NLS_SORT=BINARI_AI uw vraag is

select * from table where string_column like 'HI%'

intern zal het doen

select * from table where  
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('324242432')
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('675757576')

dus als je geen index hebt voor NLSSORT(kolom,'BINARI_AI'), zal het erg traag zijn.

wetende dat NLS_SORT=BINARY_AI accent-ongevoelig en hoofdletter-ongevoelig uw volgorde en vergelijkingen zal maken.




  1. Update SQL-modus in MySQL

  2. LOCALTIME-voorbeelden - MySQL

  3. Installeren en werken met MySQL 5 op Windows 7

  4. Aanbevolen Intel-processors voor SQL Server 2014 – maart 2015