日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql json坑_使用mysql innodb 使用5.7的json类型遇到的坑和解决办法

發(fā)布時(shí)間:2023/12/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql json坑_使用mysql innodb 使用5.7的json类型遇到的坑和解决办法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

----------------------------------------------

#查詢JSON的某個(gè)字段

select data -> ‘$.Host‘ from temp

#創(chuàng)建虛擬列

ALTER TABLE temp ADD host varchar(128) GENERATED ALWAYS AS (json_extract(data,‘$.Host‘)) VIRTUAL;

#給虛擬列創(chuàng)建索引

ALTER TABLE temp ADD INDEX index_temp_host ( host)

#用建立的第二索引列解決select count 的效率問題

select count(0) from temp where host>=0 ;

-------------------------------------------------------

EntityFramework不能使用mysql5.7的解決辦法。【MySQL - Entity : The value for column ‘IsPrimaryKey‘ in table ‘TableDetails‘ is DBNull】

(目前測(cè)試:EntityFramework不能使用mysql5.7中的Json類型,Ado.net可以使用json類型)

在mysql執(zhí)行一段代碼就可以用entityframework了

use adventureworks;

set global optimizer_switch=‘derived_merge=off‘;

set optimizer_switch=‘derived_merge=off‘;

select @@optimizer_switch;

select @@GLOBAL.optimizer_switch;

public static DataTable ExecuteDataTable(string sql, params MySqlParameter[] parameters)

{

MySqlConnection con = new MySqlConnection("server=localhost;user id=root;password=aaa_123;port=4407;database=testjson");

con.Open();

MySqlCommand cmd = new MySqlCommand(sql, con);

foreach (MySqlParameter parameter in parameters)

{

cmd.Parameters.Add(parameter);

}

DataSet dataset = new DataSet();//dataset放執(zhí)行后的數(shù)據(jù)集合

MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);

adapter.Fill(dataset);

cmd.Dispose();

con.Close();

return dataset.Tables[0];

}

-----------------------------------------------------

關(guān)于mysql?innodb count(*)速度慢的解決辦法

innodb引擎在統(tǒng)計(jì)方面和myisam是不同的,Myisam內(nèi)置了一個(gè)計(jì)數(shù)器,所以在使用 select count(*) from table 的時(shí)候,直接可以從計(jì)數(shù)器中取出數(shù)據(jù)。而innodb必須全表掃描一次方能得到總的數(shù)量。要初步解決這個(gè)問題,需要做不同于myisam的一些工作:

1、使用第二索引(一般不使用主鍵索引),并且添加where條件,如:

select count(*) from product where comp_id>=0 ;

show index from product ;

id primary key

comp_id index

2、如果只需要粗略統(tǒng)計(jì)的話也可使用

show status from product; 來(lái)得到大約值

這種方法可在數(shù)據(jù)分頁(yè)中使用!

3、使用外部計(jì)數(shù)器,比如建立一個(gè)觸發(fā)器來(lái)計(jì)數(shù)或者在程序上使用緩存方式定時(shí)計(jì)數(shù),缺陷是這些方法會(huì)額外消耗一些資源!

原文:http://www.cnblogs.com/haoliansheng/p/5982144.html

總結(jié)

以上是生活随笔為你收集整理的mysql json坑_使用mysql innodb 使用5.7的json类型遇到的坑和解决办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。