最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL8.0?索引優(yōu)化invisible?index詳情

 更新時(shí)間:2022年09月27日 08:45:45   作者:阿常囈語(yǔ)  
這篇文章主要介紹了MySQL8.0?索引優(yōu)化invisible?index詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言

MySQL8.0 開(kāi)始支持不可見(jiàn)索引。 優(yōu)化器根本不使用不可見(jiàn)索引,但會(huì)以其他的方式正常維護(hù)。

默認(rèn)情況下 索引是可見(jiàn)的。 通過(guò)不可見(jiàn)索引,可以方便數(shù)據(jù)庫(kù)管理人員 檢查 索引對(duì)查詢(xún)性能的影響,而不會(huì)進(jìn)行破壞性的更改 。

應(yīng)用場(chǎng)景: 軟刪除,灰度發(fā)布

-- 創(chuàng)建測(cè)試表
mysql> create table t1(i int ,j int);
Query OK, 0 rows affected (0.03 sec)



-- 創(chuàng)建索引 
mysql>
mysql> create index idx_i on t1(i);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> -- 創(chuàng)建 一個(gè)隱藏索引
mysql> create index idx_j on t1(j) invisible ;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0



-- 查看索引
mysql> show index from t1\G
*************************** 1. row ***************************
        Table: t1
   Non_unique: 1
     Key_name: idx_i
 Seq_in_index: 1
  Column_name: i
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
*************************** 2. row ***************************
        Table: t1
   Non_unique: 1
     Key_name: idx_j
 Seq_in_index: 1
  Column_name: j
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: NO
   Expression: NULL
2 rows in set (0.00 sec)

上面 對(duì) i,j 分別創(chuàng)建了索引, 其中j 為不可見(jiàn)索引 ,即默認(rèn)優(yōu)化器不會(huì)使用到該索引的。

索引使用情況測(cè)試

mysql> explain  select * from t1 where i= 10\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t1
   partitions: NULL
         type: ref
possible_keys: idx_i
          key: idx_i
      key_len: 5
          ref: const
         rows: 1
     filtered: 100.00
        Extra: NULL
1 row in set, 1 warning (0.00 sec)

mysql> explain  select * from t1 where j= 10\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t1
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 1
     filtered: 100.00
        Extra: Using where
1 row in set, 1 warning (0.00 sec)

如何臨時(shí)讓優(yōu)化器可以看到這個(gè)索引呢?

mysql> select @@optimizer_switch\G
*************************** 1. row ***************************
@@optimizer_switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=off,skip_scan=on
1 row in set (0.00 sec)

-- 設(shè)置開(kāi)關(guān)
mysql> set session optimizer_switch='use_invisible_indexes=on';
Query OK, 0 rows affected (0.00 sec)
mysql> select @@optimizer_switch\G
*************************** 1. row ***************************
@@optimizer_switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=on,skip_scan=on
1 row in set (0.00 sec)

-- 此時(shí)可以看到 優(yōu)化器已經(jīng)可以看到這個(gè)索引啦
mysql> explain  select * from t1 where j= 10\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t1
   partitions: NULL
         type: ref
possible_keys: idx_j
          key: idx_j
      key_len: 5
          ref: const
         rows: 1
     filtered: 100.00
        Extra: NULL
1 row in set, 1 warning (0.00 sec)

修改索引的可見(jiàn)性

mysql> ALTER TABLE t1 ALTER INDEX idx_j INVISIBLE;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE t1 ALTER INDEX idx_j  VISIBLE;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

注意: 主鍵索引 是不能設(shè)置 不可見(jiàn)的 。

create  table t2(`id` int not null auto_increment, primary key (`id`));


mysql> show index from t2\G
*************************** 1. row ***************************
        Table: t2
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
1 row in set (0.01 sec)

mysql> alter table t2 alter index PRIMARY key(`id`) invisible;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PRIMARY invisible' at line 1

測(cè)試 添加 主鍵 為不可見(jiàn)索引:

mysql> create  table t3(id int not null);
Query OK, 0 rows affected (0.03 sec)

mysql> alter table t3 add primary key pk_t3(id)  invisible;
ERROR 3522 (HY000): A primary key index cannot be invisible

primary key 是必須可見(jiàn)的, 不能設(shè)置為不可見(jiàn)索引。

在生產(chǎn)環(huán)境中 也可以利用隱藏索引進(jìn)行 SQL 語(yǔ)句的性能測(cè)試,或者對(duì)索引進(jìn)行邏輯刪除,索引的灰度發(fā)布測(cè)試,以及軟刪除索引等。

到此這篇關(guān)于MySQL8.0 索引優(yōu)化invisible index詳情的文章就介紹到這了,更多相關(guān)MySQL索引優(yōu)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 探索MySQL?8中utf8mb4釋放多語(yǔ)言數(shù)據(jù)的強(qiáng)大潛力

    探索MySQL?8中utf8mb4釋放多語(yǔ)言數(shù)據(jù)的強(qiáng)大潛力

    這篇文章主要為大家介紹了探索MySQL?8中utf8mb4釋放多語(yǔ)言數(shù)據(jù)的強(qiáng)大潛力,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)問(wèn)題

    windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)問(wèn)題

    這篇文章主要介紹了windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)問(wèn)題,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • mysql從5.7平滑升級(jí)到8.0.27的實(shí)現(xiàn)

    mysql從5.7平滑升級(jí)到8.0.27的實(shí)現(xiàn)

    mysql8.0已經(jīng)到了穩(wěn)定期,本文主要介紹了mysql從5.7平滑升級(jí)到8.0.27的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • deepin 2014系統(tǒng)下安裝mysql數(shù)據(jù)庫(kù)的方法步驟

    deepin 2014系統(tǒng)下安裝mysql數(shù)據(jù)庫(kù)的方法步驟

    這篇文章主要給大家介紹了在deepin 2014系統(tǒng)下安裝mysql數(shù)據(jù)庫(kù)的方法步驟,文中通過(guò)圖文介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-04-04
  • MySQL中的臨時(shí)表與內(nèi)存表

    MySQL中的臨時(shí)表與內(nèi)存表

    這篇文章主要介紹了MySQL中的臨時(shí)表與內(nèi)存表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 關(guān)于MySQL的存儲(chǔ)過(guò)程與存儲(chǔ)函數(shù)

    關(guān)于MySQL的存儲(chǔ)過(guò)程與存儲(chǔ)函數(shù)

    存儲(chǔ)過(guò)程是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的SQL?語(yǔ)句集(這些SQL語(yǔ)句已經(jīng)編譯過(guò)了),它存儲(chǔ)在數(shù)據(jù)庫(kù)中,一次編譯后永久有效,需要的朋友可以參考下
    2023-05-05
  • Mysql中創(chuàng)建高性能索引詳解

    Mysql中創(chuàng)建高性能索引詳解

    這篇文章主要介紹了Mysql中創(chuàng)建高性能索引詳解,索引相信大家都聽(tīng)說(shuō)過(guò),但是真正會(huì)用的又有幾人,平時(shí)工作中寫(xiě)SQL真的會(huì)考慮到這條SQL如何能夠用上索引,如何能夠提升執(zhí)行效率,文本就來(lái)詳細(xì)解讀如何創(chuàng)建高性能索引,需要的朋友可以參考下
    2023-07-07
  • mysql 轉(zhuǎn)換NULL數(shù)據(jù)方法(必看)

    mysql 轉(zhuǎn)換NULL數(shù)據(jù)方法(必看)

    下面小編就為大家?guī)?lái)一篇mysql 轉(zhuǎn)換NULL數(shù)據(jù)方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • ubuntu20安裝配置mysql8.0.23步驟詳解

    ubuntu20安裝配置mysql8.0.23步驟詳解

    這篇文章主要為大家介紹了ubuntu20安裝配置mysql8.0.23步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • MySQL千萬(wàn)級(jí)數(shù)據(jù)表的優(yōu)化實(shí)戰(zhàn)記錄

    MySQL千萬(wàn)級(jí)數(shù)據(jù)表的優(yōu)化實(shí)戰(zhàn)記錄

    千萬(wàn)級(jí)大表如何優(yōu)化,這是一個(gè)很有技術(shù)含量的問(wèn)題,通常我們的直覺(jué)思維都會(huì)跳轉(zhuǎn)到拆分或者數(shù)據(jù)分區(qū),這篇文章主要給大家介紹了關(guān)于MySQL千萬(wàn)級(jí)數(shù)據(jù)表優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

利川市| 仙桃市| 拜城县| 曲阜市| 额尔古纳市| 含山县| 永和县| 井冈山市| 迁安市| 蛟河市| 湘阴县| 富民县| 且末县| 嘉义县| 莲花县| 汝州市| 郁南县| 比如县| 雅安市| 龙胜| 梨树县| 镇巴县| 芒康县| 丹棱县| 雷山县| 赤壁市| 凤阳县| 北宁市| 大兴区| 丹凤县| 宝应县| 隆子县| 佛坪县| 鞍山市| 柏乡县| 大余县| 吴旗县| 常州市| 长沙市| 呼伦贝尔市| 肇庆市|