MySQL

一、为什么MySQL要引入JSON字段?在互联网业务中,经常会遇到以下情况:字段属性不固定(如商品属性、用户画像标签等)结构会随着业务变化而变化,不适合频繁修改表结构希望兼顾查询能力和灵活性MySQL从5.7版本开始原生支持JSON类型,提供了结构化存储、自动校验、丰富查询函数等能力,用于解决传统text/varchar存储JSON的不足。二、JSON字段有哪些特点?1.存储格式是二进制(不是纯文本)MySQL内部会将JSON数据解析为binaryJSON,查询更快。插入时会进行语法校验,不是合法JSON会报错。2.可索引,但有限制MySQL给JSON字段建立索引有两种方式:方式1:生成列(G...
一、什么是ibtmp1文件?ibtmp1是InnoDB临时表空间文件,用于存储MySQLInnoDB引擎产生的临时数据。它主要用途包括:排序操作(ORDERBY、GROUPBY):当结果集过大无法完全放入内存时,临时数据会写入ibtmp1。大事务操作:如批量插入、更新、大量JOIN或子查询操作。临时表存储:内存临时表不足时,MySQL会自动使用磁盘临时表,而临时表也会放到ibtmp1。简单理解:ibtmp1就是InnoDB的“临时工作区”,保证大数据操作不会溢出内存。二、为什么ibtmp1会过大?很多DBA会遇到MySQL目录下ibtmp1文件不断膨胀甚至占满磁盘的情况,其原因主要有以下几类:...
一、为什么需要优化表空间?在日常使用MySQL的过程中,我们经常会执行如下操作:删除大量历史数据更新字段内容(尤其是长文本或大字段)建立和删除索引这些操作虽然改变了表的数据,但底层物理文件(表空间)并不会自动缩小。也就是说,即使你删除了一半的数据,.ibd文件的大小可能仍然维持不变。这就导致了:数据库“看起来”空了很多,磁盘空间却依旧被占满。解决这个问题的关键命令就是:OPTIMIZETABLE二、OPTIMIZETABLE是什么?OPTIMIZETABLE是MySQL提供的表维护命令,用于:回收未使用的空间(即碎片整理)重新统计索引信息提高后续查询性能它的本质是对表进行一次“重建”(rebu...
一、什么是空间索引(SPATIALIndex)?在传统数据库中,我们使用B-Tree索引、HASH索引等结构来加快数据查询速度,例如根据用户ID、时间、姓名等字段进行检索。但当我们需要处理地理位置数据(如经纬度、坐标、多边形)时,普通索引的效率就显得力不从心。为此,MySQL提供了一种专门用于空间数据类型的索引——空间索引(SPATIALIndex)。它可以高效地执行地理位置相关的查询,如:查找某点是否在某个区域内;搜索指定范围(矩形/圆形)内的对象;计算对象之间的空间关系(相交、包含、接触等)。二、空间数据类型简介MySQL的空间索引依赖于GIS(GeographicInformationS...
一、什么是全文索引?在日常的数据库查询中,我们通常会使用LIKE'%关键字%'来搜索文本内容。然而,这种方式不仅效率低下,还无法实现复杂的文本匹配逻辑。为了解决这个问题,MySQL提供了全文索引(FULLTEXTIndex),它是一种专门针对文本字段的索引类型,可实现高效的关键字搜索和相关性排序,常用于文章、评论、商品描述等场景。二、全文索引的适用类型全文索引通常适用于以下字段类型:CHARVARCHARTEXT(含TINYTEXT、MEDIUMTEXT、LONGTEXT)从MySQL5.6开始,InnoDB引擎也已经支持FULLTEXT索引(之前仅MyISAM支持),这让全文...
一、为什么要使用索引?当数据量从几千条增长到上百万条时,查询性能的差距会越来越明显。如果没有索引,每次查询都需要从头到尾扫描整张表(称为全表扫描)。而索引(Index)就像书籍的目录,可以帮助数据库快速定位到目标数据,从而大幅提升查询速度。一句话总结:索引是数据库中“用空间换时间”的机制,用额外的存储空间换取更快的查询速度。二、MySQL中的常见索引类型MySQL(尤其是InnoDB引擎)支持多种类型的索引,了解它们的区别有助于我们更合理地优化数据库。1.普通索引(INDEX)最基本的索引类型,用于加速查询。CREATEINDEXidx_nameONusers(name);适用场景:查询条件频...
        在SQL(StructuredQueryLanguage)中,GROUPBY语句是一个强大的工具,它允许我们将来自一个或多个表的行分组为较小的集合,并对每个这样的集合执行聚合操作(如计数、求和、平均值等)。GROUPBY通常与聚合函数(如COUNT(),SUM(),AVG(),MAX(),MIN()等)一起使用,以从每个分组中提取有意义的信息。一、基本语法SELECTcolumn_name(s),AGGREGATE_FUNCTION(column_name)FROMtable_nameWHEREco...
引言在数据库设计中,主键(PrimaryKey)和外键(ForeignKey)是构建数据关系模型的核心工具。它们不仅保障了数据的唯一性和完整性,还实现了跨表数据关联的逻辑闭环。本文将通过实例解析这两大关键概念,助你掌握MySQL中数据关系的核心设计原则。一、主键:数据的唯一身份证1.1核心特性唯一性:主键值在表中不可重复非空性:主键字段不允许为NULL单一性:一个表只能定义一个主键(但可以是多列组合的复合主键)1.2主键类型类型说明示例单列主键单一字段作为主键user_idINTPRIMARYKEY复合主键多字段组合作为主键PRIMARYKEY(order_id,user_id)自增主键自动生...
1、使用cast进行类型转换SELECTCAST(123ASCHAR);2、使用concat进行转换SELECTCONCAT(123,'');