Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hiệu suất của RegEx so với LIKE trong các truy vấn MySql

Có thể là nó có thể nhanh hơn vì điều kiện LIKE có thể được đánh giá nhanh hơn so với biểu thức chính quy, vì vậy nếu hầu hết các hàng không kiểm tra được thì nó có thể nhanh hơn. Tuy nhiên, nó sẽ chậm hơn nếu hầu hết các hàng thành công vì phải chạy hai thử nghiệm cho các hàng thành công thay vì chỉ một. Nó cũng phụ thuộc vào biểu thức mà trình tối ưu hóa chọn để chạy trước.

Một tốc độ thậm chí còn lớn hơn có thể được chứng kiến ​​nếu bạn có một cái gì đó như thế này:

SELECT * FROM (
   SELECT * FROM lineage_string
   WHERE lineage LIKE '179%'
) WHERE lineage regexp '^179(/|$)'

Giờ đây, một chỉ mục có thể được sử dụng để tìm các hàng có khả năng xảy ra vì LIKE '179%' là sargable . Nhiều hàng sẽ không cần phải được kiểm tra.

Như mọi khi, cách tốt nhất để chắc chắn là tự đo lường nó trên dữ liệu thực tế của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn PHP MySQL không hoạt động

  2. Nhật ký khởi động MySQL 5.7.17 hiển thị [Lưu ý] Quyền truy cập bị từ chối đối với người dùng 'UNKNOWN_MYSQL_USER'

  3. Sqlalchemy trả về hàng cũ?

  4. Đối số OUT hoặc INOUT 1 cho thường lệ xxx không phải là một biến hoặc biến giả MỚI trong kích hoạt TRƯỚC

  5. cách sử dụng mysql_data_seek với PDO?