sql >> Database teknologi >  >> RDS >> Oracle

Enhver præstationspåvirkning i Oracle for at bruge LIKE 'streng' vs ='streng'?

Der er en klar forskel, når du bruger bindevariabler, som du bør bruge i Oracle til alt andet end data warehousing eller andre bulk data operationer.

Tag tilfældet med:

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle kan ikke vide, at værdien af ​​:b1 er '%some_value%', eller 'some_value' osv. indtil udførelsestidspunktet, så det vil foretage en vurdering af kardinaliteten af ​​resultatet baseret på heuristik og komme med en passende plan, der enten kan være egnet til forskellige værdier af :b, såsom '%A', '%', 'A' osv.

Lignende problemer kan gælde med et lighedsprædikat, men rækken af ​​kardinaliteter, der kan opstå, er meget nemmere at estimere baseret på kolonnestatistikker eller tilstedeværelsen af ​​en unik begrænsning, for eksempel.

Så personligt ville jeg ikke begynde at bruge LIKE som erstatning for =. Optimeringsværktøjet er temmelig nemt at narre nogle gange.



  1. Sådan deaktiveres tjek af fremmed nøgle i MySQL

  2. Kom godt i gang med SQLite fuldtekstsøgning

  3. Sådan fungerer WEEKDAY() i MariaDB

  4. Hvorfor får jeg denne SQLSyntaxErrorException:ORA-00933:SQL-kommando blev ikke afsluttet korrekt, når jeg forsøger at udføre denne JDBC-forespørgsel?