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

Tôi có nên sử dụng các câu lệnh đã chuẩn bị sẵn cho MySQL trong PHP PERFORMANCE-WISE không?

Lịch sử

Đây là câu trả lời Stackoverflow đầu tiên của tôi. Đã có nhiều thay đổi kể từ đó, đặc biệt là việc ngừng sử dụng và loại bỏ API mysql. Ngay cả khi bạn vẫn đang sử dụng php 5.6, không nên sử dụng api mysql_ *. Bây giờ PDO hoặc mysqli là những tùy chọn duy nhất để lựa chọn. PDO tốt hơn vì nhiều lý do.

Các câu lệnh đã chuẩn bị có được lưu vào bộ nhớ đệm qua các lần tải trang không?

Cùng một câu lệnh đã chuẩn bị sẽ không được sử dụng giữa các lần tải trang. Nó phải được chuẩn bị mọi lúc. Nếu ép từng mili giây lớn đều quan trọng, thì một quy trình được lưu trữ có thể là một ý tưởng hay (giả sử bạn có một truy vấn phức tạp).

Đối với các chèn lớn (hàng nghìn hàng) Có thể đạt được mức tăng lớn hơn bằng cách kết xuất dữ liệu của bạn vào một tệp văn bản và tải nó bằng TẢI DỮ LIỆU TRONG TỆP. Nó nhanh hơn rất nhiều so với một loạt các lần chèn.

Câu trả lời ban đầu

Sự thật của vấn đề là đôi khi mysqli nhanh hơn và những lúc khác thì mysql api nhanh hơn. Nhưng sự khác biệt thực sự rất nhỏ. Nếu bạn nhìn vào bất kỳ bài kiểm tra hiệu suất nào trên web, sự khác biệt thực sự chỉ là 10 - 20 mili giây. Cách tốt nhất để tăng hiệu suất là tối ưu hóa thiết kế bảng.

Nhiều bài kiểm tra 'chứng minh' api cũ hơn nhanh hơn một cách thuận tiện quên rằng để bảo mật tối đa, mysql_real_escape_string () nên được gọi cho mỗi biến được sử dụng trong truy vấn.

Các truy vấn được máy chủ lưu vào bộ đệm, nếu và chỉ khi dữ liệu trên tất cả các bảng được sử dụng trong truy vấn không thay đổi.

Chờ một bản cập nhật khác với các con số thực tế



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP &mySQL:Chính xác thì sử dụng htmlentities khi nào?

  2. Đọc tệp văn bản và chuyển nội dung sang cơ sở dữ liệu mysql

  3. Python db-api:fetchone vs fetchmany vs fetchall

  4. SET GLOBAL max_allowed_packet không hoạt động

  5. Làm cách nào để định cấu hình Rails cho quyền truy cập không cần mật khẩu vào cơ sở dữ liệu từ xa