Tôi cực kỳ mới với Chế độ xem vì vậy hãy tha thứ cho tôi nếu đây là câu hỏi ngớ ngẩn, nhưng tôi có Chế độ xem thực sự hữu ích trong việc tối ưu hóa truy vấn khá khó sử dụng và cho phép tôi chọn một nhóm nhỏ các cột trong Chế độ xem tuy nhiên, tôi đã hy vọng rằng Chế độ xem thực sự sẽ được lưu trữ ở đâu đó để lựa chọn chống lại nó sẽ không mất nhiều thời gian.Có cách nào để lưu vào bộ nhớ cache Chế độ xem để truy vấn nhanh chóng không?
Tôi có thể bị nhầm lẫn, nhưng tôi hiểu được (từ tốc độ create view
thực hiện và từ thời gian truy vấn của tôi đối với Chế độ xem của tôi) rằng Chế độ xem thực sự chạy dưới dạng truy vấn trước truy vấn bên ngoài, mọi lúc Tôi chọn chống lại nó. Tôi thực sự hy vọng rằng tôi đang xem xét một số cơ chế nhờ đó khi tôi chạy CREATE VIEW, nó có thể thực hiện công việc khó khăn khi truy vấn truy vấn Xem *, để lựa chọn tiếp theo của tôi chống lại Chế độ xem tĩnh này sẽ thực sự nhanh chóng.
BTW, tôi hoàn toàn hiểu rằng rõ ràng VIEW này sẽ là ảnh chụp nhanh dữ liệu đã tồn tại tại thời điểm VIEW được tạo và sẽ không phản ánh bất kỳ thông tin mới nào được chèn/cập nhật sau khi tạo VIEW. Đó thực sự là những gì tôi cần.
TIA
Vì vậy, những gì bạn muốn là chế độ xem vật hoá, không phải dạng xem mysql cung cấp mà chỉ là bí danh cho truy vấn lớn. Theo mysql 5.1, các truy vấn SELECT đối với khung nhìn được lưu trữ, do đó mọi truy vấn tiếp theo sẽ nhanh chóng. Làm thế nào chính xác là một cái gì đó không làm việc cho bạn ở đây? Bạn có sử dụng truy vấn con trong truy vấn tạo chế độ xem không? –
Tôi đang sử dụng truy vấn lớn với nhiều mục chọn trong VIEW của mình và dường như không phải là bộ nhớ đệm. Như một bằng chứng về khái niệm tôi chỉ đơn giản gọi là 'select count (id) từ myView' mà tôi đoán là khá linh hoạt nếu kết quả của myView được lưu trữ, nhưng nó chỉ mất chừng nào bất kỳ truy vấn nào khác chống lại nó. Có phải vấn đề mà Chế độ xem của tôi đã chọn không? (Tôi không chắc chắn đó là những gì bạn có ý nghĩa của subqueries hoặc nếu có một sự khác biệt). –
Chọn lựa hoặc truy vấn phụ - vì vậy chúng tôi đang nói về cùng một điều. MySQL sử dụng bộ nhớ cache truy vấn riêng của nó.Nói, chúng ta có một bảng với 1 mil hàng, bạn truy vấn nó như 'select count (*)' - lần đầu tiên sẽ là slow-ish, lần thứ hai sẽ tức thời vì nó sẽ lấy dữ liệu được lưu trữ. Cùng một quy tắc áp dụng cho các khung nhìn, với sự khác biệt mà MySQL không lưu trữ các kết quả bỏ chọn. Tất cả điều này có nghĩa là kết quả bạn nhận được từ chế độ xem của bạn * sẽ không được lưu vào bộ nhớ cache nội bộ * bởi MySQL nếu bạn có các lựa chọn. Do đó, nó sẽ luôn chạy các truy vấn từ đầu, nếu bạn muốn. Và đó là lý do tại sao chế độ xem của bạn sẽ chậm. –