non riesco a trovare nulla di confermare se adeguatamente costruiti query lavorare più velocemente su una base di dati vs case-insensitive maiuscole e minuscole (anche se ho il sospetto che la differenza è trascurabile), ma alcune cose sono chiare per me:
- Se le vostre esigenze di business non chiedono per esso, si sta mettendo da soli fino a un sacco di lavoro extra (questo è il punto cruciale sia HLGEM e risposte di Damien_The_Unbeliever).
- Se i requisiti aziendali non lo richiedono, ti stai preparando per un sacco di possibili errori.
- il suo modo troppo semplice per creare query scarso rendimento in un database case-insensitive se un caso è richiesto sensibili ricerca:
una query come:
... WHERE UPPER(GivenName) = 'PETER'
sarà non utilizzare un indice su GivenName. Si potrebbe pensare qualcosa:
... WHERE GivenName = 'PETER' COLLATE SQL_Latin1_General_CP1_CS_AS
funzionerebbe meglio, e lo fa. Ma per ottenere il massimo delle prestazioni che avrebbe dovuto fare qualcosa di simile:
... WHERE GivenName = 'PETER' COLLATE SQL_Latin1_General_CP1_CS_AS
AND GivenName LIKE 'PETER'
(vedi this article per i dettagli)
Grazie amico per aver raccolto queste informazioni. Penso che sia diventato ovvio che cambiare le regole non valga la pena. –