Abbiamo un'applicazione Web in cui gli utenti eseguono query ad-hoc in base ai parametri immessi. Potrei anche menzionare che il tempo di risposta è di grande importanza per gli utenti.Vuoi inviare questo semplice SQL indietro per la rilavorazione?
La pagina Web crea dinamicamente un SQL da eseguire in base ai parametri immessi. Ad esempio, se l'utente immette "1" per "Business Unit" costruiamo uno SQL come questo:
SELECT * FROM FACT WHERE
BUSINESS_UNIT = '1'
--AND other criteria based on the input params
ho scoperto che in cui l'utente non specifica un BUSINESS_UNIT la seguente query è costruito
SELECT * FROM FACT WHERE
BUSINESS_UNIT LIKE '%'
--AND other criteria based on the input params
IMHO, questo è inutilmente (se non grossolanamente) inefficiente e garantisce l'invio del codice errato per la modifica ma dal momento che ho una velocità molto più alta di invio del codice per la rilavorazione rispetto ad altri, credo che potrei guadagnarmi una reputazione come " troppo schizzinoso. "
Se questa è una domanda inappropriata perché non è una codifica diretta Q, fammelo sapere e la eliminerò immediatamente. Sono molto confuso se le domande soggettive come questa siano permesse o no! Guarderò le tue risposte.
ty
Aggiornamento:
Sto usando un database Oracle.
La mia impressione è che Oracle non ottimizzi "LIKE '%'" rimuovendo la condizione e che lasciarla sia meno efficiente. Qualcuno potrebbe confermare?
Sai chi altro era troppo schizzinoso? MICHELANGELO. – Ken
Come si può vedere dalla risposta di Womp, in questa situazione non è necessario inviare il codice, poiché la maggior parte degli ottimizzatori di query SQL gestirà questo esempio in modo efficiente. Tuttavia, sono curioso di sapere se lo sviluppatore * sapeva o meno che sarebbe stato ottimizzato in tal modo. –