MySQL Byte-für-Byte-Vergleich, was ist schneller? binär vs bin_collate
Angenommen, wir haben eine Tabelle, die so aussieht:
create table t1(c1 varchar(x)collate utf8mb4_general_ci, index(c1))
Um bytesensitive Vergleiche durchzuführen, haben wir grundsätzlich zwei Möglichkeiten (angenommen, dassall relevante Zeichenfolgen tunnich haben nachgestellte Leerzeichen, d. h. sie sind alle padspace-konform):
select*from t1 where c1 ='test'collate utf8mb4_bin
select*from t1 where c1 = binary'test'
Was sollte bevorzugt werden, wenn Leistung von Belang ist?
Wenn Sie einen Index für die Sortierung nicht-binärer Zeichen verwenden, ist es schneller,vergleichen Si mitbinary string oder binäre Kollatierung?
(Hinzufügen einer neuen Spalte zur Tabelle, um nur das binäre Äquivalent von @ zu speicherc1
ist ein großer Speicherhit und nicht möglich.)
(S. Würde mich über eine Antwort freuen, die sowohl Hash- als auch Btree-Vergleiche vergleicht, obwohl ich hauptsächlich an Btree-Vergleichen interessiert bin.)