溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql視圖能不能創(chuàng)建索引

發(fā)布時(shí)間:2022-06-29 09:46:50 來(lái)源:億速云 閱讀:851 作者:iii 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章主要介紹“mysql視圖能不能創(chuàng)建索引”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“mysql視圖能不能創(chuàng)建索引”文章能幫助大家解決問(wèn)題。

mysql視圖不能創(chuàng)建索引。視圖是一種虛擬存在的表,并不實(shí)際存在于數(shù)據(jù)庫(kù)中,它是沒(méi)有實(shí)際行和列的(行和列的數(shù)據(jù)來(lái)自于定義視圖的查詢中所使用的表);而索引是一種特殊的數(shù)據(jù)庫(kù)結(jié)構(gòu),由數(shù)據(jù)表中的一列或多列組合而成,因此視圖中不能創(chuàng)建索引,沒(méi)有主鍵,也不能使用觸發(fā)器。

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

mysql視圖不能創(chuàng)建索引。

MySQL 視圖(View)是一種虛擬存在的表,并不實(shí)際存在于數(shù)據(jù)庫(kù)中,它是沒(méi)有實(shí)際行和列的;行和列的數(shù)據(jù)來(lái)自于定義視圖的查詢中所使用的表,并且還是在使用視圖時(shí)動(dòng)態(tài)生成的。

數(shù)據(jù)庫(kù)中只存放了視圖的定義,并沒(méi)有存放視圖中的數(shù)據(jù),這些數(shù)據(jù)都存放在定義視圖查詢所引用的真實(shí)表中。使用視圖查詢數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)會(huì)從真實(shí)表中取出對(duì)應(yīng)的數(shù)據(jù)。因此,視圖中的數(shù)據(jù)是依賴于真實(shí)表中的數(shù)據(jù)的。一旦真實(shí)表中的數(shù)據(jù)發(fā)生改變,顯示在視圖中的數(shù)據(jù)也會(huì)發(fā)生改變。

而索引是一種特殊的數(shù)據(jù)庫(kù)結(jié)構(gòu),由數(shù)據(jù)表中的一列或多列組合而成,可以用來(lái)快速查詢數(shù)據(jù)表中有某一特定值的記錄。本節(jié)將詳細(xì)講解索引的含義、作用和優(yōu)缺點(diǎn)。

通過(guò)索引,查詢數(shù)據(jù)時(shí)不用讀完記錄的所有信息,而只是查詢索引列。否則,數(shù)據(jù)庫(kù)系統(tǒng)將讀取每條記錄的所有信息進(jìn)行匹配。

因此:索引由數(shù)據(jù)表中的一列或多列組合而成,而視圖是一種虛擬存在的表,沒(méi)有實(shí)際行和列的;進(jìn)而mysql視圖不能創(chuàng)建索引。

擴(kuò)展知識(shí):mysql視圖

mysql視圖本質(zhì)上就是語(yǔ)句,當(dāng)你調(diào)用視圖的時(shí)候數(shù)據(jù)庫(kù)管理系統(tǒng)會(huì)先去找視圖中封裝的語(yǔ)句,先執(zhí)行生成視圖的語(yǔ)句,再在視圖的基礎(chǔ)上進(jìn)行查詢

視圖的優(yōu)點(diǎn)

視圖與表在本質(zhì)上雖然不相同,但視圖經(jīng)過(guò)定義以后,結(jié)構(gòu)形式和表一樣,可以進(jìn)行查詢、修改、更新和刪除等操作。同時(shí),視圖具有如下優(yōu)點(diǎn):

1) 定制用戶數(shù)據(jù),聚焦特定的數(shù)據(jù)

在實(shí)際的應(yīng)用過(guò)程中,不同的用戶可能對(duì)不同的數(shù)據(jù)有不同的要求。

例如,當(dāng)數(shù)據(jù)庫(kù)同時(shí)存在時(shí),如學(xué)生基本信息表、課程表和教師信息表等多種表同時(shí)存在時(shí),可以根據(jù)需求讓不同的用戶使用各自的數(shù)據(jù)。學(xué)生查看修改自己基本信息的視圖,安排課程人員查看修改課程表和教師信息的視圖,教師查看學(xué)生信息和課程信息表的視圖。

2) 簡(jiǎn)化數(shù)據(jù)操作

在使用查詢時(shí),很多時(shí)候要使用聚合函數(shù),同時(shí)還要顯示其他字段的信息,可能還需要關(guān)聯(lián)到其他表,語(yǔ)句可能會(huì)很長(zhǎng),如果這個(gè)動(dòng)作頻繁發(fā)生的話,可以創(chuàng)建視圖來(lái)簡(jiǎn)化操作。

3) 提高數(shù)據(jù)的安全性

視圖是虛擬的,物理上是不存在的??梢灾皇谟栌脩粢晥D的權(quán)限,而不具體指定使用表的權(quán)限,來(lái)保護(hù)基礎(chǔ)數(shù)據(jù)的安全。

4) 共享所需數(shù)據(jù)

通過(guò)使用視圖,每個(gè)用戶不必都定義和存儲(chǔ)自己所需的數(shù)據(jù),可以共享數(shù)據(jù)庫(kù)中的數(shù)據(jù),同樣的數(shù)據(jù)只需要存儲(chǔ)一次。

5) 更改數(shù)據(jù)格式

通過(guò)使用視圖,可以重新格式化檢索出的數(shù)據(jù),并組織輸出到其他應(yīng)用程序中。

6) 重用 SQL 語(yǔ)句

視圖提供的是對(duì)查詢操作的封裝,本身不包含數(shù)據(jù),所呈現(xiàn)的數(shù)據(jù)是根據(jù)視圖定義從基礎(chǔ)表中檢索出來(lái)的,如果基礎(chǔ)表的數(shù)據(jù)新增或刪除,視圖呈現(xiàn)的也是更新后的數(shù)據(jù)。視圖定義后,編寫(xiě)完所需的查詢,可以方便地重用該視圖。

要注意區(qū)別視圖和數(shù)據(jù)表的本質(zhì),即視圖是基于真實(shí)表的一張?zhí)摂M的表,其數(shù)據(jù)來(lái)源均建立在真實(shí)表的基礎(chǔ)上。

使用視圖的時(shí)候,還應(yīng)該注意以下幾點(diǎn):

  • 創(chuàng)建視圖需要足夠的訪問(wèn)權(quán)限。

  • 創(chuàng)建視圖的數(shù)目沒(méi)有限制。

  • 視圖可以嵌套,即從其他視圖中檢索數(shù)據(jù)的查詢來(lái)創(chuàng)建視圖。

  • 視圖不能索引,也不能有關(guān)聯(lián)的觸發(fā)器、默認(rèn)值或規(guī)則。

  • 視圖可以和表一起使用。

  • 視圖不包含數(shù)據(jù),所以每次使用視圖時(shí),都必須執(zhí)行查詢中所需的任何一個(gè)檢索操作。如果用多個(gè)連接和過(guò)濾條件創(chuàng)建了復(fù)雜的視圖或嵌套了視圖,可能會(huì)發(fā)現(xiàn)系統(tǒng)運(yùn)行性能下降得十分嚴(yán)重。因此,在部署大量視圖應(yīng)用時(shí),應(yīng)該進(jìn)行系統(tǒng)測(cè)試。

關(guān)于“mysql視圖能不能創(chuàng)建索引”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI