Ho letto alcune delle discussioni in this question e ho pensato a me stesso che nel mio codice PL/SQL ho "esistenti" query di stile in tutto il luogo che non usa l'ottimizzazione ROWNUM = 1.In quali condizioni ROWNUM = 1 aumenta significativamente le prestazioni in una query sile "esistente"
Le domande che ho sono:
- Fa l'introduzione di ROWNUM = 1 aumentare in modo significativo le prestazioni?
- In caso affermativo, in quali condizioni sarebbero le prestazioni siano migliorate in particolare (ad esempio, un sacco di join, vincoli sulle colonne non indicizzati, tabelle di grandi dimensioni, grandi insiemi di risultati)
Sto cercando di determinare sia il valore di riscrivere tutto delle mie query esistenti per aggiungere un'ottimizzazione ROWNUM = 1.
Le query a cui sto pensando sono quelle che possono avere più join e possono eseguire query su tabelle di grandi dimensioni. Hanno la forma generale di:
SELECT 1
INTO ln_count
FROM table_1, table_2...., table_n
WHERE <various joins and conditions>;
IF ln_count > 0 THEN
<do stuff>
END IF;
sto considerando cambiarle a:
SELECT 1
INTO ln_count
FROM table_1, table_2...., table_n
WHERE <various joins and conditions>
AND ROWNUM = 1;
IF <local variable> > 0 THEN
<do stuff>
END IF;
La tua prima query significa avere SELECT COUNT (1) anziché SELECT 1? –
SELEZIONA 1 (vale a dire selezionare un valore costante per qualsiasi riga restituita invece di contare il numero di righe) – darreljnz