使用mysqlinnodb使用5.7的json类型遇到的坑和解决办法

iDEAAM爱地爱木      2022-02-06     591

关键词:

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

#查询JSON的某个字段
select data -> ‘$.Host‘ from temp

#创建虚拟列
ALTER TABLE temp ADD host varchar(128) GENERATED ALWAYS AS (json_extract(data,‘$.Host‘)) VIRTUAL;

#给虚拟列创建索引
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】

(目前测试:EntityFramework不能使用mysql5.7中的Json类型,Ado.net可以使用json类型)

在mysql执行一段代码就可以用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放执行后的数据集合
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            adapter.Fill(dataset);
            cmd.Dispose();
            con.Close();
            return dataset.Tables[0];
        }

  

 

 

 

 

 

 

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

关于mysql innodb count(*)速度慢的解决办法

innodb引擎在统计方面和myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据。而innodb必须全表扫描一次方能得到总的数量。要初步解决这个问题,需要做不同于myisam的一些工作:
 
1、使用第二索引(一般不使用主键索引),并且添加where条件,如:
 
      select count(*) from product where comp_id>=0 ;
 
     show index from product ;
     id primary key
     comp_id index
 
2、如果只需要粗略统计的话也可使用
 
show status from product; 来得到大约值
这种方法可在数据分页中使用!
 
3、使用外部计数器,比如建立一个触发器来计数或者在程序上使用缓存方式定时计数,缺陷是这些方法会额外消耗一些资源!

MySQL 5.7 JSON 数据类型可以容纳多少

...小大致相同(或在一个数量级之内)。JSON数据类型仍然使用行级锁定,因此最好将文档保持在1-2MB左右 查看详情

mySQL 5.7 使用新的 json 功能将行作为 json 返回

】mySQL5.7使用新的json功能将行作为json返回【英文标题】:mySQL5.7returnrowasjsonusingnewjsonfeatures【发布时间】:2016-05-2108:54:22【问题描述】:我正在查看一些新的JSONfeatures,并想知道是否有一种聪明(或明显)的方法可以将行集作为J... 查看详情

使用hibernate在Mysql 5.7数据库中存储/检索Json数据

】使用hibernate在Mysql5.7数据库中存储/检索Json数据【英文标题】:Store/RetrieveJsondatato/fromMysql5.7databaseusinghibernate【发布时间】:2015-12-2511:43:01【问题描述】:我将开始一个需要生成动态谷歌表单的项目。这个项目的要求是我需要使... 查看详情

Laravel 5.7 具有 JSON 字段类型的存在/唯一验证

】Laravel5.7具有JSON字段类型的存在/唯一验证【英文标题】:Laravel5.7exists/uniquevalidationwithJSONfieldtype【发布时间】:2019-03-2901:05:01【问题描述】:我有一个包含以下字段的“国家”表:id:integername:json字段“名称”将值存储为:"en":"... 查看详情

MySQL 5.7+,嵌套路径中的 JSON_SET 值

...1-1317:18:15【问题描述】:对于最近的一个开发项目,我们使用的是MySQL5.7,因此我们可以利用最新的JSON函数...我正在构建一个UPDATE查询,其中应将嵌套的json对象插入/添加到JSON类型的属性列中,请参阅下面的查询。UPDATE`table`SET` 查看详情

使用 JSON 而不是标准化数据,这种方法是不是正确?

...否正确?【发布时间】:2012-10-0920:47:26【问题描述】:在MySQLinnoDB表中都有微博帖子和与之相关的投票/表情符号。需要两种类型的页面:(A)包含许多微博的列表页面以及单个页面上的投票数/表情符号数( 查看详情

具有 Mysql JSON 类型的 Spring Data

...发布时间】:2017-01-1200:59:10【问题描述】:我们在项目中使用带有JPA的spring数据。出MySQL服务器版本是5.7。我有两个问题:1)spring数据是否与将对象持久化到MySQLdb上的新JSON类型兼容?换句话说,我希望有一个实体,而不是在其表... 查看详情

使用参数innodb_file_per_table支持mysqlinnodb表数据共享空间自动收缩

http://heylinux.com/archives/2367.htmlhttp://blog.csdn.net/ywh147/article/details/8996022  使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个... 查看详情

mybatis疑难事件簿:#‘传递布尔值无效问题(代码片段)

...场MySQL自5.7版本就开始提供JSON类型,本次问题就是在使用JSON类型时出现的MySQL服务可以正常查询而使用Mybatis查询失效问题。具体表现为在使用Mybatis(这里需要注意一下,笔者实际使用了其增强版Mybatis-Plus)按照JS... 查看详情

使用嵌套的动态类型解析 JSON

】使用嵌套的动态类型解析JSON【英文标题】:parsingJSONwithanested,dynamictype【发布时间】:2021-10-1808:35:16【问题描述】:假设我有3个数据类(实际上可能更多)。A类或B类应使用数据类型标识符包装在Wrap类中。这将允许在应用程序... 查看详情

mysqlinnodb引擎深入讲解

参考技术A表空间(ibd文件),一个MySQL实例可以对应多个表空间,用于存储记录,索引等数据。段,分为数据段、索引段、回滚段,innodb是索引组织表,数据段就是B+Tree的叶子节点,索引段为非叶子节点,段用来管理多个区。区,表... 查看详情

尝试使用 Spring Boots 的 RestTemplate 使用内容类型 [text/json]

】尝试使用SpringBoots的RestTemplate使用内容类型[text/json]【英文标题】:Tryingtoconsumecontent-type[text/json]withSpringBoots\'sRestTemplate【发布时间】:2019-12-0706:11:33【问题描述】:服务器正在给我一个内容类型为text/json的响应,我需要将它消... 查看详情

使用包含不同类型字典的 Swift 解码 JSON

】使用包含不同类型字典的Swift解码JSON【英文标题】:DecodingJSONwithSwiftcontainingdictionarywithdifferenttypes【发布时间】:2020-11-2914:48:20【问题描述】:我有一个JSON格式,我正在尝试使用JSONDecoder解析,但由于JSON的结构方式,我不知道... 查看详情

使用 ObjectMapper 的不同类型的 JSON 文件

】使用ObjectMapper的不同类型的JSON文件【英文标题】:DifferenttypesJSONfileusingObjectMapper【发布时间】:2016-04-2010:21:56【问题描述】:我正在使用AlamofireObjectMapper与后端服务器进行通信。其中一个请求的结果是一个项目数组,其中包... 查看详情

无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON

】无法使用“((Any))”类型的参数列表调用“JSON”-使用AlamoFire和SwiftyJSON【英文标题】:Cannotinvoke\'JSON\'withanargumentlistoftype\'((Any))\'-UsingAlamoFire&SwiftyJSON【发布时间】:2020-04-0718:09:18【问题描述】:在我之前使用旧版本的Al... 查看详情

mysqlinnodb读书笔记07mysql中各种类型文件详解(代码片段)

文章目录一、参数文件1.参数文件作用2.参数的定义3.参数的类型4.参数的修改二、日志文件1.日志文件的分类2.errorlog3.binlog3.1开启binlog功能3.2查看binlog变化过程3.3binlog的作用3.4binlog文件和index文件3.5binlog日志流转过程3.6其他重要参... 查看详情

使用未声明的类型“JSON”和使用未解析的标识符“JSONEncoding”

】使用未声明的类型“JSON”和使用未解析的标识符“JSONEncoding”【英文标题】:Useofundeclaredtype\'JSON\'anduseofunresolvedidentifier\'JSONEncoding\'【发布时间】:2017-01-2007:04:11【问题描述】:我的Xcode8.2项目(swift3)中需要JSON或JSONEncoding的每... 查看详情

如何在 TypeScript 中使用导入的 JSON 文件的类型

】如何在TypeScript中使用导入的JSON文件的类型【英文标题】:HowdoIusethetypeofimportedJSONfileinTypeScript【发布时间】:2021-12-1912:58:31【问题描述】:我有一个使用NextJS、React、GraphQL和TypeScript构建的项目。在这个项目中,我有一些静态JS... 查看详情