以下是MySQL存儲(chǔ)生成列和MySQL虛擬生成列之間的一些基本區(qū)別:
在磁盤空間方面
如果從磁盤空間的角度來(lái)看,虛擬生成列不會(huì)占用任何磁盤空間。另一方面,存儲(chǔ)生成列會(huì)占用磁盤空間。
在操作方面
如果從操作的角度來(lái)看,虛擬生成列是原地操作,這意味著表定義被更改時(shí)不需要重新復(fù)制所有數(shù)據(jù)。另一方面,存儲(chǔ)生成列是復(fù)制操作,其成本與向表中添加新列的成本相同。
在計(jì)算方面
?在虛擬生成列中,值是在讀取操作和BEFORE觸發(fā)器期間動(dòng)態(tài)計(jì)算的。另一方面,在存儲(chǔ)生成列中,值在每個(gè)INSERT和UPDATE語(yǔ)句中更新。
何時(shí)使用
我們應(yīng)該考慮在數(shù)據(jù)中使用虛擬列,其中變化發(fā)生的次數(shù)相當(dāng)多。虛擬列的成本來(lái)自于不斷讀取表,并且服務(wù)器每次都必須計(jì)算該列的值。另一方面,我們應(yīng)該考慮在數(shù)據(jù)在創(chuàng)建后不會(huì)發(fā)生顯著或根本不變化的情況下使用存儲(chǔ)列。
以上就是MySQL 存儲(chǔ)的生成列與 MySQL 虛擬生成列有何不同?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!






