2008-09-17 13 views
7

Ich war krank und müde Googlen die Lösung für die Suche nach Groß- und Kleinschreibung auf Sybase ASE (Sybase Daten/Spaltennamen sind Groß- und Kleinschreibung beachten). Die Sybase-Dokumentation sagt stolz, dass es nur eine Möglichkeit gibt, eine solche Suche durchzuführen, die die Funktionen Upper und Lower verwendet, aber das Sprichwort sagt, dass es Leistungsprobleme hat. Und glauben Sie mir, dass sie Recht haben, wenn Ihr Tisch riesige Daten hat, ist die Leistung so unangenehm, dass Sie nie wieder Ober- und Untertage benutzen werden. Meine Frage an andere Entwickler ist: Wie geht ihr das an?Suche ohne Berücksichtigung von Groß- und Kleinschreibung auf Sybase

P.S. Rufe nicht auf, die Sortierreihenfolge zu ändern oder zu einer anderen Datenbank zu wechseln. In der realen Welt kontrollieren Entwickler die Datenbanken nicht.

Antwort

1

Wenn Sie die Sortierreihenfolge in der Datenbank nicht ändern können (beste Option), helfen die Indizes für unbekannte Fallfelder nicht. Es gibt eine Möglichkeit, dies zu tun und die Leistung zu halten, wenn die Anzahl der Felder überschaubar ist. Sie erstellen eine zusätzliche Spalte MyFieldLower. Sie verwenden einen Trigger, um das Feld mit einem Kleinbuchstaben von MyField gefüllt zu halten.

Dann wird die Abfrage ist: WHERE MyFieldLower = LOWER (@MySearch)

Diese Indizierung verwendet wird.

3

Versuchen Sie, eine functional index, wie

Create Index INDX_MY_SEARCH on TABLE_NAME(LOWER(@MySearch) 
2

Fügen Sie zusätzliche groß- oder klein Spalte in der select-Anweisung zu erstellen. Beispiel:

select col1, upper(col1) upp_col1 from table1 order by upp_col1