mysql json坑_使用mysql innodb 使用5.7的json类型遇到的坑和解决办法
----------------------------------------------
#查詢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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工商银行利率2022存款最新公告,有以下
- 下一篇: linux cmake编译源码,linu