2017-02-24 2 views
0
select * from abc as t where t.num = 8898 order by t.create_dt 
select * from abc as t where t.num like '8898' order by t.create_dt 
select * from abc as t where t.num like reverse('%8898') order by t.create_dt 

welche ist am schnellsten?Minimale Zeit verbraucht für Ausgangsergebnis

+0

Testen Sie sie und sehen Sie, welche die schnellste auf Ihre Daten und Ihr System ist. –

Antwort

0

Ich würde sagen, das Warum die schnellen

select * from abc as t where t.num = 8898 order by t.create_dt 

wäre das?

Sie vergleichen eine ganze Zahl, aber Ihre anderen beiden Methoden vergleicht tatsächlich ein Zeichen.

Diese Methode ist eigentlich falsch, aber es ist verwendbar:

select * from abc as t where t.num like '8898' order by t.create_dt 

LIKE in der Regel für String oder varchar in der Datenbank verwendet wird.

Diese Methode wird auch falsch ist, aber es ist auch verwendbar:

select * from abc as t where t.num like reverse('%8898') order by t.create_dt 

Für eine ganze Zahl ist, ist es am besten =,=!,>,<,>=,<= Was String zu verwenden, ist es ratsam, LIKE zu verwenden, um die genaue Zeichenfolge zu finden, die den Wert enthält, Ich suche nach. Wenn Sie einen Platzhalter verwenden möchten, um eine bestimmte Zeichenfolge zu finden, können Sie so LIKE '%something%'

0

Die erste sollte nicht langsamer als die anderen sein, unter der Annahme, dass num eine Zahl ist. Es kann von einem Index auf abc(num, create_dt) profitieren.

Die zweite könnte schnell sein, außer dass sie num in eine Zeichenfolge konvertieren würde. Ohne einen Index ist dies ein sehr kleiner Unterschied zu dem ersten. Es schließt jedoch wahrscheinlich die Verwendung eines Indexes aus.

Die dritte ist so ziemlich die gleiche Argumentation.

Verwandte Themen