亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL 虛擬列和虛擬索引的實現(xiàn)

 更新時間:2024年08月22日 10:00:15   作者:Q z1997  
虛擬列是MySQL 5.7開始引入的新特性,本文主要介紹了MySQL 虛擬列和虛擬索引的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

是什么

Mysql 5.7 中推出了一個非常實用的功能 虛擬列 Generated (Virtual) Columns

在MySQL 5.7中,支持兩種Generated Column,即Virtual Generated Column和Stored Generated Column,前者只將Generated Column保存在數(shù)據(jù)字典中(表的元數(shù)據(jù)),并不會將這一列數(shù)據(jù)持久化到磁盤上;后者會將Generated Column持久化到磁盤上,而不是每次讀取的時候計算所得。很明顯,后者存放了可以通過已有數(shù)據(jù)計算而得的數(shù)據(jù),需要更多的磁盤空間,與Virtual Column相比并沒有優(yōu)勢,因此,MySQL 5.7中,不指定Generated Column的類型,默認是Virtual Column。

如果需要Stored Generated Golumn的話,可能在Virtual Generated Column上建立索引更加合適

綜上,一般情況下,都使用Virtual Generated Column,這也是MySQL默認的方式

能干嘛

能對 where 條件 上使用函數(shù)等原因使索引失效 如使用函數(shù) 就可以對這個 字段和函數(shù)建立一個虛擬類和虛擬索引提高效率

怎么用

比如是 sys_user 表中 create_time

在這里插入圖片描述

他是一個datetime 類型的
假設我們有一個查詢

SELECT dayofweek(create_time) from  sys_user WHERE dayofweek(create_time) = 1 

結(jié)果

在這里插入圖片描述

執(zhí)行計劃

在這里插入圖片描述

如果我們?yōu)閏reate_time 字段 建立索引 這個查詢語句 仍然無法使用索引 因為 函數(shù) 阻止了索引 (這里就不實驗了啊 有興趣可以自己試試 肯定沒用)

建立一個虛擬列

在這里插入圖片描述

ALTER TABLE `qzboot`.`sys_user` 
ADD COLUMN `create_time_dayofweek` tinyint(4)  GENERATED ALWAYS AS (dayofweek(create_time)) VIRTUAL ;

新建一個虛擬索引

在這里插入圖片描述

ALTER TABLE `qzboot`.`sys_user` 
ADD INDEX `test`(`create_time_dayofweek`) USING BTREE COMMENT '虛擬索引';
SELECT dayofweek(create_time) from  sys_user WHERE dayofweek(create_time) = 1

#  sql 改造
SELECT create_time_dayofweek from  sys_user WHERE create_time_dayofweek = 1 

結(jié)果

在這里插入圖片描述

執(zhí)行計劃

在這里插入圖片描述

虛擬列不存儲在數(shù)據(jù)行中,但虛擬列的元數(shù)據(jù)信息會存在于相關系統(tǒng)表中,對虛擬列的添加或者刪除只會涉及這些系統(tǒng)表,不會導致數(shù)據(jù)表的重建,所以效率很高

到此這篇關于MySQL 虛擬列和虛擬索引的實現(xiàn)的文章就介紹到這了,更多相關MySQL 虛擬列和虛擬索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL數(shù)據(jù)庫外鍵?foreing?key

    MySQL數(shù)據(jù)庫外鍵?foreing?key

    這篇文章主要介紹了MySQL數(shù)據(jù)庫外鍵?foreing?key,外鍵表示了兩個實體之間的聯(lián)系,更多相關介紹需要的小伙伴可以參考一下
    2022-06-06
  • Mysql 5.7.18 解壓版下載安裝及啟動mysql服務的圖文詳解

    Mysql 5.7.18 解壓版下載安裝及啟動mysql服務的圖文詳解

    這篇文章主要介紹了Mysql 5.7.18 解壓版下載安裝及啟動mysql服務的圖文詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • MySQL定位長事務(Identify Long Transactions)的實現(xiàn)

    MySQL定位長事務(Identify Long Transactions)的實現(xiàn)

    在MySQL的運行中,經(jīng)常會遇到一些長事務,本文主要介紹了MySQL定位長事務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-09-09
  • Mysql全文搜索match against的用法

    Mysql全文搜索match against的用法

    全文檢索在 MySQL 中就是一個 FULLTEXT 類型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 時或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、 VARCHAR 或 TEXT 列上創(chuàng)建
    2011-10-10
  • mysql滑動訂單問題原理與解決方法實例分析

    mysql滑動訂單問題原理與解決方法實例分析

    這篇文章主要介紹了mysql滑動訂單問題原理與解決方法,結(jié)合實例形式分析了mysql滑動訂單的問題的基本原理、解決方法與相關操作注意事項,需要的朋友可以參考下
    2019-12-12
  • MySQL自連接與子查詢方式

    MySQL自連接與子查詢方式

    這篇文章主要介紹了MySQL自連接與子查詢方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • MySql?字符集不同導致?left?join?慢查詢的問題解決

    MySql?字符集不同導致?left?join?慢查詢的問題解決

    當兩個表的字符集不一樣,在使用字符型字段進行表連接查詢時,就需要特別注意下查詢耗時是否符合預期,本文主要介紹了MySql?字符集不同導致?left?join?慢查詢的問題解決,感興趣的可以了解一下
    2024-05-05
  • VS2022連接數(shù)據(jù)庫MySQL并進行基本的表的操作指南

    VS2022連接數(shù)據(jù)庫MySQL并進行基本的表的操作指南

    鑒于MySQL數(shù)據(jù)庫的流行與強大,決定多學習使用,下面這篇文章主要給大家介紹了關于VS2022連接數(shù)據(jù)庫MySQL并進行基本的表的操作指南,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • mysql8關閉binlog并清空Binlog的方法

    mysql8關閉binlog并清空Binlog的方法

    這篇文章主要介紹了mysql8關閉binlog并清空Binlog,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 詳解MySQL中的NULL值

    詳解MySQL中的NULL值

    這篇文章主要介紹了MySQL中的NULL值的相關知識,是MySQL入門學習中的基礎知識,需要的朋友可以參考下
    2015-05-05

最新評論