婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 簡單談談MySQL5.7 JSON格式檢索

簡單談談MySQL5.7 JSON格式檢索

熱門標簽:地圖簡圖標注 東莞外呼企業管理系統 手機外呼系統違法嗎 沈陽智能外呼系統供應商 桂林云電銷機器人收費 南通電銷外呼系統哪家強 谷歌地圖標注位置圖解 清遠申請400電話 如何選擇優質的外呼系統

MySQL5.7版本開始支持JSON格式,在創建表時,可以指定列表的數據類型為JSON,但是如何在JSON格式上創建索引呢??

本人做了一個簡單測試。

第一步:建立一個包含JSON類型的表:

CREATE TABLE json_test` (
 id` int (8) NOT NULL AUTO_INCREMENT,
 content` json NOT NULL ,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第二步:初始化數據

insert into json_test(content) value( '{"name":"zhangsan","age":18}' );
insert into json_test(content) value( '{"name":"lisi","age":19}' );
insert into json_test(content) value( '{"name":"wangwu","age":20}' );

第三步:查詢JSON類列的數據

select json_extract(content,  '$.name' )  from json_test  where json_extract(content,  '$.name' )= "zhangsan" ;

通過expain分析改查詢語句,發現其走全表掃描

在網上查詢資料,得知如果要在JSON列上進行檢索,需要對檢索的key創建虛擬列,然后再虛擬列上創建索引

第四步:在content列上,對"name"建立虛擬列

ALTER TABLE json_test  ADD name_virtual  varchar (32) GENERATED ALWAYS  AS (json_extract(content,  '$.name' )) VIRTUAL;

第五步:對虛擬列創建索引

CREATE INDEX name_virtual_index  ON json_test(name_virtual);

再次做查詢( 注,where條件需要使用虛擬列來進行檢索,如果直接用JSON列比較,還是會走全表掃描 )

explain  select json_extract(content,  '$.name' )  from json_test  where name_virtual= "zhangsan" \G

總結:

其實MySQL通過一種空間換時間的做法,類似創建一個觸發器,把JSON列上的數據冗余存儲到虛擬列上,比較的時候通過走虛擬列的索引,再定位到實際數據。

您可能感興趣的文章:
  • MySQL5.7中的JSON基本操作指南
  • MySQL5.7 JSON類型使用詳解
  • Mysql5.7中JSON操作函數使用說明
  • mysql5.6及以下版本如何查詢數據庫里的json
  • 詳解Mysql中的JSON系列操作函數
  • MySQL操作之JSON數據類型操作詳解
  • MySQL插入json問題
  • mysql(5.6及以下)解析json的方法實例詳解
  • mysql5.7 新增的json字段類型用法實例分析

標簽:成都 重慶 常德 天津 內蒙古 湖州 貴州 臨沂

巨人網絡通訊聲明:本文標題《簡單談談MySQL5.7 JSON格式檢索》,本文關鍵詞  簡單,談談,MySQL5.7,JSON,格式,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《簡單談談MySQL5.7 JSON格式檢索》相關的同類信息!
  • 本頁收集關于簡單談談MySQL5.7 JSON格式檢索的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 来安县| 景泰县| 金阳县| 青冈县| 溧水县| 施甸县| 宾川县| 都兰县| 军事| 吴堡县| 子长县| 祁门县| 崇信县| 新和县| 边坝县| 大方县| 南投县| 镇沅| 安义县| 荔波县| 长治市| 平和县| 阜新市| 北辰区| 罗定市| 上饶县| 嵊泗县| 长乐市| 陵川县| 类乌齐县| 新丰县| 高清| 克东县| 红原县| 洛宁县| 齐河县| 杭锦旗| 凤翔县| 汨罗市| 阿城市| 汝阳县|