Oracle
 sql >> база данни >  >> RDS >> Oracle

Някакво въздействие върху производителността в Oracle за използване LIKE 'string' vs ='string'?

Има ясна разлика, когато използвате променливи за свързване, които трябва да използвате в Oracle за нещо различно от съхранение на данни или други операции с групови данни.

Вземете случая на:

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle не може да знае, че стойността на :b1 е '%some_value%', или 'some_value' и т.н. до момента на изпълнение, така че ще направи оценка на мощността на резултата въз основа на евристики и ще излезе с подходящ план, който или може или не може да е подходящ за различни стойности на :b, като '%A', '%', 'A' и т.н.

Подобни проблеми могат да се прилагат с предикат за равенство, но обхватът от мощности, които могат да се получат, се оценява много по-лесно въз основа на статистически данни в колоните или наличието на уникално ограничение, например.

Така че, лично аз не бих започнал да използвам LIKE като заместител на =. Понякога е доста лесно да се заблуди оптимизаторът.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвам Timestamp_to_scn и Scn_to_timestamp в Oracle?

  2. Въведение в Oracle Mobile Cloud Service

  3. Превод на Microsoft T-SQL към Oracle SQL

  4. Oracle Insert Select с поръчка по

  5. Методът ExecuteBatch връща масив със стойност -2 в java