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

chúng ta có thể tránh hùng hồn trong số lượng lớn hồ sơ không

Hãy xem một phần của điều này.

if(!empty($filter['keyword'])) {
   $leads=$leads->where(function ($q) use ($filter) {
          $q->where('ld_name','like', "%".$filter['keyword']."%")
            ->orWhere('ld_email','like', "%".$filter['keyword']."%")
            ->orWhere('ld_phoneno','like', "%".$filter['keyword']."%");
       });
 }

Lược đồ đối sánh từ khóa này vốn dĩ rất chậm và tai hại. Nó chậm trong cả Eloquent và SQL gốc. Không có cách nào nó có thể hoạt động trong MySQL mà không thực hiện quét toàn bộ bảng . Đó là, nó phải kiểm tra mọi hàng trong bảng của bạn để tìm kiếm các kết quả phù hợp và không thể, trong MySQL, khai thác bất kỳ lược đồ tra cứu được lập chỉ mục nào. Tại sao?

column LIKE 'constant%'

có thể xem chỉ mục trên cột column và nhanh chóng tìm thấy bất kỳ giá trị nào bắt đầu bằng 'constant' . Nhưng

column LIKE '%constant%'

phải xem xét mọi giá trị trong bảng. % hàng đầu làm cho việc tra cứu chỉ mục trở nên vô ích.

Trong MySQL, bạn sẽ khôn ngoan khi điều tra tìm kiếm FULLTEXT của MySQL như một cách xử lý tra cứu từ khóa của bạn. (Các phiên bản postgreSQL gần đây có thể xử lý loại truy vấn này trực tiếp với một loại chỉ mục khác, nhưng không phải MySQL.)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để đặt liên kết cố định của bài đăng trên blog của bạn theo ngày và tiêu đề của bài đăng?

  2. PHP:json_encode () không hiển thị bất kỳ thứ gì với mảng đa chiều

  3. Nối các bảng trong hai cơ sở dữ liệu bằng SQLAlchemy

  4. Thủ tục lưu trữ không trả về giá trị trong MVC5

  5. Làm thế nào để chuyển đổi thời gian MySQL