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

Các khung nhìn MySQL hoạt động như thế nào?

Một chế độ xem hoạt động giống như một cái bàn , nhưng nó không phải là một cái bàn. Nó không bao giờ tồn tại; nó chỉ là một câu lệnh SQL chuẩn bị được chạy khi bạn tham chiếu đến tên dạng xem. IE:

CREATE VIEW foo AS
  SELECT * FROM bar

SELECT * FROM foo

... tương đương với chạy:

SELECT x.* 
  FROM (SELECT * FROM bar) x

MySQLDump sẽ không bao giờ chứa các hàng được chèn vào một dạng xem ...

Đáng buồn thay, điều đó là do thiết kế (mặc dù có vấn đề). Có nhiều hạn chế đối với các chế độ xem MySQL, được ghi lại: http://dev.mysql.com/doc/refman/5.0/en/create-view.html

Vì vậy, nếu nó chỉ là một bảng tưởng tượng / câu lệnh chuẩn bị, điều đó có nghĩa là nó về mặt lý thuyết có cùng hiệu suất (hoặc thậm chí thấp hơn) như một bảng / truy vấn bình thường?

Không.
Một bảng có thể có các chỉ mục được liên kết, điều này có thể giúp truy xuất dữ liệu nhanh hơn (với một số chi phí cho việc chèn / cập nhật). Một số cơ sở dữ liệu hỗ trợ các chế độ xem "cụ thể hóa", là các chế độ xem có thể có các chỉ mục được áp dụng cho chúng - điều này không có gì ngạc nhiên khi MySQL không hỗ trợ được cung cấp chức năng xem hạn chế (chỉ bắt đầu trong IIRC v5, rất muộn so với trò chơi).

Bởi vì một dạng xem là một bảng dẫn xuất, hiệu suất của dạng xem chỉ tốt như truy vấn mà nó được xây dựng. Nếu truy vấn đó tệ, vấn đề hiệu suất sẽ chỉ là quả cầu tuyết ... Điều đó nói rằng, khi truy vấn một chế độ xem - nếu một tham chiếu cột chế độ xem trong mệnh đề WHERE không được bao bọc trong một hàm (IE:WHERE v.column LIKE ... , không WHERE LOWER(t.column) LIKE ... ), trình tối ưu hóa có thể đẩy tiêu chí (được gọi là vị từ) vào truy vấn ban đầu - làm cho nó nhanh hơ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. Flask-SQLAlchemy - Các bảng / cơ sở dữ liệu được tạo và hủy khi nào?

  2. CHỌN và liệt kê con và mẹ

  3. CẬP NHẬT tất cả các giá trị cột tương đương với một giá trị cột của bảng khác dựa trên id của chúng

  4. Làm thế nào để chuyển đổi từ varbinary sang char / varchar trong mysql

  5. MySQL SELECT thường xuyên nhất theo nhóm