Hướng dẫn dùng explain mysql trong PHP
Show Bài viết sau dịch từ nguồn sitepoint.com. Khi bạn muốn thực thi một câu truy vấn (query), MySQL Query Optimizer sẽ cố gắng đưa ra một kế hoạch tối ưu nhất cho việc thực hiện query. Bạn có thể thấy thông tin về kế hoạch đó bằng cách thêm lệnh Tìm hiểu kết quả trả về của lệnh EXPLAINViệc sử dụng
Có rất nhiều thông tin được bao hàm trong 10 cột trên. Đó là:
Bạn có thể bổ sung thêm từ khóa
Khắc phục sự cố về hiệu năng với EXPLAINGiờ hãy cùng tìm hiểu làm cách nào chúng ta có thể tối ưu một truy vấn hiệu năng thấp bằng cách phân tích kết quả của Ở đây, tôi đã tạo ra một cơ sở dữ liệu mẫu cho một ứng dụng thương mại mà ở đó không có chỉ mục, khóa chính và sẽ mô tả ảnh hưởng của thiết kế tồi tệ này bằng cách viết ra các truy vấn phức tạp. Bạn có thể download Mô hình DB từ Github.
Nhìn vào kết quả trên, bạn thấy được tất cả biểu hiện của một truy vấn tồi tệ. Tuy nhiên, kể cả khi tôi có viết truy vấn tốt hơn, thì
kết quả vẫn tương tự, bởi không có chỉ mục. Loại join là Bây giờ, chúng ta thử thêm 1 số chỉ mục khá hiển nhiên, như khóa chính cho từng bảng, và thực hiện truy vấn một lần nữa. Theo thông lệ cơ bản, bạn tìm đến các cột dùng để JOIN và cho chúng làm khóa, bởi MySQL sẽ luôn tìm theo các cột đó để tra cứu các bản ghi.
Giờ chúng ta chạy lại truy vấn sau khi đã thêm chỉ mục.
Sau khi thêm chỉ mục, số lượng bản ghi cần duyệt giảm xuống còn Ở dòng đầu tiên, loại join là Tiếp theo hãy xem một truy vấn khác. Ở đây, chúng ta chỉ đơn giản hợp 2 bảng lại,
Bạn có thể thấy rất nhiều vấn đề ở câu truy vấn này. Nó duyệt tất cả bản ghi ở bảng
Như bạn thấy ở kết quả, số lượng dòng được duyệt đả giảm đáng kể, từ Kết luậnTrong bài viết này, tôi đã thỏa luận về từ khóa Quan điểm cá nhânLần đầu tiên tôi biết đến Ngày nay, việc sử dụng các framework hỗ trợ ORM khiến cho các lập trình viên không quan tâm đến quá trình truy vấn dữ liệu trong DB, kéo theo đó là các vấn đề về hiệu năng khi ứng dụng to lên. Ngược lại, việc viết truy vấn bằng tay, dù tốn thời gian nhưng lại đem lại hiệu quả cao về hiệu năng sau này cũng như nâng cao hiểu biết của lập trình viên. Khi tôi còn là thực tập sinh, tôi phải viết tất cả truy vấn bằng tay và theo chỉ định của người hướng dẫn, tôi phải tự |