問題:MySQL中為什么prepare視圖不展開?
回答:在MySQL中,prepare語句可以將一條SQL語句編譯成二進制格式,以提高執行效率。而視圖則是一種虛擬表,它并不存儲數據,而是根據定義的SQL語句動態生成結果集。
在MySQL中,如果我們使用了prepare語句定義了一個視圖,那么這個視圖不會被展開,這是因為視圖本身就是一條SQL語句,而prepare語句將這條SQL語句編譯成了二進制格式,無法再次修改。
ts_view的視圖,它的定義如下:
tsts WHERE age >18;
如果我們使用prepare語句來定義這個視圖,如下:
ttsts WHERE age >?';
那么這個視圖就不會被展開,如果我們執行下面的語句:
t USING 18;
ts_view的視圖,它的定義和我們之前手動定義的視圖是一樣的。
總結來說,MySQL中的prepare語句可以提高SQL語句的執行效率,但是當我們使用prepare語句定義視圖時,這個視圖不會被展開,