首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 排序规则

排序规则是一组用于比较字符集中字符规则。 每个 MySQL 字符集可以支持一个或者多个排序规则,用于定义每个字符比较规则,包括是否区分大小写,是否区分重音等。...这是排序规则唯一标识符,您可以在创建或更改时使用它来指定排序规则。 Charset:字符集名称。排序规则是与特定字符集关联,该列显示了该排序规则适用字符集。 Id:排序规则内部编号。...如果没有指定排序规则MySQL 会基于字符集设置一个默认排序规则。...要查看特定数据排序规则,使用 SHOW TABLE STATUS 语句。...MySQL 8.0 默认使用排序规则 utf8mb4_0900_ai_ci 对于中文按照偏旁部首进行排序。

34120

MySQL索引规则

索引(Index)是帮助 MySQL 高效获取数据数据结构。但是索引规则有哪些呢?...索引一定要命名规范,哪个库哪个哪几个字段哪种类型索引 选择唯一性索引——唯一性索引值是唯一,可以更快速通过该索引来确定某条记录 为经常需要排序、分组和联合操作字段建立索引 为常作为查询条件字段建立索引...限制索引数目:越多索引,会使更新变得很浪费时间。...最左前缀匹配原则 尽量选择区分度高列作为索引区分度公式是表示字段不重复比例 索引列不能参与计算,保持列“干净”:带函数查询不参与索引 尽量扩展索引,不要新建索引 尽量索引覆盖,不要回操作...如果是多个索引,指定索引提高查询效率 索引固然可以提高查询效率,但是也有自己局限性,数据搜索还是适合用ElasticSearch,但是mysql要做持久化,同步ES两种方法:一种是ESjava

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Mysql常用建立索引规则

建立索引规则 建立索引常用规则如下: 主键、外键必须有索引; 数据量超过300应该有索引; 经常与其他进行连接,在连接字段上应该建立索引; 经常出现在Where子句中字段,非凡是大字段...; 假如既有单字段索引,又有这几个字段上复合索引,一般可以删除复合索引; 频繁进行数据操作,不要建立太多索引; 删除无用索引,避免对执行计划造成负面影响; ​ 以上是一些普遍建立索引时判定依据...一言以蔽之,索引建立必须慎重,对每个索引必要性都应该经过仔细分析,要有建立依据。...因为太多索引与不充分、不正确索引对性能都毫无益处:在上建立每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上开销。 ​...另外,过多复合索引,在有单字段索引情况下,一般都是没有存在价值;相反,还会降低数据增加删除时性能,凡是对频繁更新来说,负面影响更大。

2.8K10

mysql联合索引使用规则

从一道有趣题目开始分析: 假设某个有一个联合索引(c1,c2,c3,c4)以下选项哪些字段使用了该索引: A where c1=x and c2=x and c4>x and c3=x B where...index c1234(c1,c2,c3,c4); 插入2条数据:insert into t VALUES(‘1′,’1′,’1′,’1′,’1’),(‘2′,’2′,’2′,’2′,’2’) 使用MySql...下面2图我们对比下索引最左原则: 上图结果显示直接使用c3是全查询,无法使用该索引,所以c3字段使用索引前提是c1,c2两字段均使用了索引。 即是索引最左原则(左前缀原则)。...B选项: key_len长度说明c1,c2字段用到了该索引,Extra显示并没有使用临时进行排序,说明排序是使用了索引,但并没有计算在key_len值中,也没有起到连接c4作用,说明索引到c3这里是断掉...(这段写时候总感觉有点别扭,不知道我理解对不对,还有待更深层次研究) C选项: 使用group by 一般先生成临时文件,再进行排序,但是字段顺序为c2,c3时,并没有用临时进行排序,而是利用索引排序好

1.3K20

——完整约束性规则(键)

foreign key 2 则1多条记录对应2一条记录,即多对一 利用foreign key原理我们可以制作两张多对多,一对一关系 多对多: 1多条记录可以对应2一条记录...2多条记录也可以对应1一条记录 一对一: 1一条记录唯一对应2一条记录,反之亦然 分析时,我们先从按照上面的基本原理去套,然后再翻译成真实意义,就很好理解了 #多对一或称为一对多...三张:出版社,作者信息,书 一对多(或多对一):一个出版社可以出版多本书 关联方式:foreign key 建立多对一关系需要注意 1 先建立被关联,被关联字段必须保证是唯一 2 再创建关联...,关联字段,一定要保证是可以重复 ps:关联字段一定是来自于关联对应字段值 =====================多对一===================== 先建立被关联...: foreign key(1_字段名) references 2(字段名); 在2字段名是主键情况下(即不为空,且唯一) 若1字段名不唯一,则是多对一 若1字段名唯一(unique)

2.3K70

MySql约束

中一定要有各种约束,通过约束,让我们未来插入数据库数据是符合预期。约束本质是通过技术收到逼迫程序员插入正确数据,反过来,站在mysql视角,凡是插入进来数据,都是符合数据约束。...站在正常业务逻辑中: 如果班级没有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们在设计数据库时候,一定要在中进行限制,满足上面条件数据就不能插入到中。...一个主键可以被添加到一列,或者多列上 主键;主键所在列通常是整数类型 创建时候直接在字段上指定主键 mysql> create table if not exists test_key (...对于自增长:默认是从1开始插入,如果默认插入了一个值作为起始值,则从这个起始值加1开始 所以我们在创建时候可以给自增长设置一个起始值: mysql> create table t22( -...建立外键本质其实就是把相关性交给mysql去审核了,提前告诉mysql之间约束关系,那么当用户插入不符合业务逻辑数据时候,mysql不允许你插入。

17130

MySQL之间关系

之间关系 1 foreign key 2 则1多条记录对应2一条记录,即多对一 利用foreign key原理我们可以制作两张多对多,一对一关系 多对多: 1多条记录可以对应...2一条记录 2多条记录也可以对应1一条记录 一对一: 1一条记录唯一对应2一条记录,反之亦然 分析时,我们先从按照上面的基本原理去套,然后再翻译成真实意义,就很好理解了...1、先确定关系 2、找到多一方,把关联字段写在多一方 一对多  多对一或者一对多(左边多条记录对应右边唯一一条记录)  需要注意: 1.先建被关联,保证被关联字段必须唯一。...图片 创建 书要关联出版社 被关联 create table press(id int primary key auto_increment, name char(20)); 关联 create...add primary  key(id,avg) 多对多:一个作者可以写多本书,一本书也可以有多个作者,双向一对多,即多对 关联方式:foreign key+一张新 示例: 图片 图片 创建 =

3.5K10

MySQL约束

约束 约束:中一定要有各种约束,通过约束,让我们未来插入数据库数据是符合预期。约束本质是通过技术手段,倒逼用户,插入正确数据。...反过来,在 mysql 角度,凡是插入进来数据,都是符合数据约束!约束最终目的就是保证数据完整性和可预期性。因此我们需要更多约束条件!...值由原来 1 变成 00001,这就是 zerofill 属性作用,如果宽度小于设定宽度(这里设置是 5),自动填充 0;要注意是,这只是最后显示结果,在 MySQL 中实际存储还是1...再插入 stu : 但是此时这两张是两张独立,它们只有对应关联关系,并没有任何约束关系。...建立外键本质其实就是把相关性交给 mysql 去审核了,提前告诉 mysql 之间约束关系,那么当用户插入不符合业务逻辑数据时候,mysql 不允许你插入。

10210

MYSQL约束

'学号', name varchar(5) ); 创建好之后,我们可以追加主键 2.删除主键 alter table 名 drop primary key; 案例: 3.复合主键 在创建时候...索引: 在关系数据库中,索引是一种单独、物理对数据库中一列或多列值进行排序一种存储结 构,它是某个中一列或若干列值集合和相应指向中物理标识这些值数据页逻辑指针清单。...索引作用相当于图书目录,可以根据目录中页码快速找到所需内容。 索引提供指向存储在指定列中数据值指针,然后根据您指定排序顺序对这些指针排序。...这样可以使对应于SQL语句执行得更快,可快速访问数据库特定信息 七、唯一键 一张中有往往有很多字段需要唯一性,数据不能重复,但是一张中只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束问题...;插入学生班级号不能在班级中没有。

21640

MySQL操作

#前言:我们说过,库相当于一个文件夹,表相当于文件夹里一个个文件,表里面的一条记录相当于一行内容,一条记录有对应标题,称为字段 #直观 ?...#id,name,sex,age为字段,其余一行内容称为一条记录 1.建 #创建表语法格式 Create table ( , ….....:   create table 表示创建固定关键字,student为名,有四个字段,分别表示   id:学号列, int:数字类型, 4:长度为4, not null:不为空值...字节 极大文本数据 #创建时候指定存储引擎 mysql> create table test ( -> id int(4) not null auto_increment,...#语法格式:drop table #例子:删除db库里面的student mysql> use db; Database changed mysql> show tables; #查看库中

4.6K40

MySQL约束

约束本质: 通过技术手段倒逼程序员插入正确数据。反过来站在mysql视角,凡是插入进来数据,都是符合数据约束。 约束最终目标: 保证数据完整性和可预期性。 为什么数据库这么严格?...通过desc操作,其后四列就属于约束条件: 总结一下:约束就是结构设计者在其他人插入数据之前,预先把规则定好,再让被别人按照他规则进行数据增删查改,不满足约束数据不会被插入到对应中,这样下来...二.非空约束 1.NULL与’ '比较 在MySQL数据类型已经说过,这二者是不同,NULL代表什么都没有,而' '代表一个空串。 在select语句中,NULL不会参与到相应计算操作中。...如果将学生和班级结合成一个,那么在插入数据时,就需要插入大量字段造成没必要冗余。若将其分成两个,那么通过一一对应映射,来减少没必要数据。 为什么会造成没必要冗余?...在两个前提下,若要新增一名学生信息,只需要插入三个字段;若合并成一个,那么就需要插入3+2-1=4个字段,并且我们知道组合起来情况也会更多,两个合并结果就是数据位置上相乘,比如: 两个

18450

MySQL order by不同排序规则

全字段排序 全字段排序在内存中进行,不涉及磁盘IO、不需要回操作,但数据量受内存大小影响,有局限性。 语句执行流程: 初始化sort_buffer,将需要查询字段放入sort_buffer。...对sort_buffer中数据按order by条件快速排序。 按照排序结果取数据返回。 rowid排序 rowid排序涉及磁盘IO,需要一次回操作,不受内存大小限制。...当排序字段较多时,内存可放下行数很少,需要分成很多个临时文件,排序性能很差,即MySQL认为排序单行长度太大会使用rowid排序。...当索引上字段信息满足查询结果集时(即覆盖索引),则不需要再回到主键索引上取数据。步骤2就变成了从索引上取出数据,作为结果集直接返回,节省一步回操作。...使用覆盖索引时,explain语句Extra字段会多了个"Using index",表示使用索引覆盖。 MySQL一个设计思想:如果内存够,就要多利用内存,尽量减少磁盘访问。

26840

mysql分区_MySQL分区分

以至于查询速度变慢,而且由于锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈。 mysql中有一种机制是锁定和行锁定,是为了保证数据完整性。...2、MySQL是将一个大按照一定规则分解成多张具有独立存储空间实体表,每个都对应三个文件,MYD数据文件,.MYI索引文件,.frm结构文件。...这些可以分布在同一块磁盘上,也可以在不同机器上。app读写时候根据事先定义好规则得到对应名,然后去操作它。...Mysql分为垂直切分和水平切分,具体区别如下: 垂直切分是指数据表列拆分,把一张列比较多拆分为多张 通常我们按以下原则进行垂直拆分: 把不常用字段单独放在一张; 把text,blob(...分区和分表相似,都是按照规则分解表。不同在于分将大分解为若干个独立实体表,而分区是将数据分段划分在多个位置存放,分区后,还是一张,但数据散列到多个位置了。

9.7K20

数据库建规则_SQL创建数据

数据类型尽量小,这里尽量小是指在满足可以预见未来需求前提下,但是有不能太小, 上次监控系统里面的 mon_tair_stat_detail_2012_1 data_size 和 use_size...所以在建时候一定要预估这个字段最大长度到底是多少。   C. 尽量不要允许NULL,除非必要,可以用NOT NULL+DEFAULT 值来代替。   D....比如说时间: 目前我们定义时间时候 都是create_time, modify_time,以后建时候,都按照这个标准来,就不要写成createtime这样。 B....新建与之前字段有相似或者相同字段,字段名称和类型也必须相同,切记不能随意重新命名,例如:token_md5 就不要命名成tokenmd5了。 E....每个字段COMMENT必须写清楚,枚举类型必须写清楚每个值到底是什么意思。 F. 名 字段名字统一用小写。

2.1K10

MySQL 临时与内存区别

MySQL 中,Temporary Table(临时)和 Memory Table(内存)是两种不同类型,它们有一些重要区别和用途。...可以使用 CREATE TEMPORARY TABLE 语句创建临时。 临时可以存储在磁盘上,也可以存储在内存中,具体取决于 MySQL 配置和存储引擎。...内存适用于需要快速读写操作场景,但需要注意是,内存数据会在 MySQL 服务重启时丢失,因为数据存储在内存中。...3.区别 主要区别在于存储和生命周期: 存储: 临时存储位置可以是磁盘或内存,而内存数据存储在内存中。...生命周期: 临时生命周期限于会话或连接,会话结束时自动删除;而内存数据在 MySQL 服务重启时会丢失。 4.小结 您需要根据业务需求来选择使用临时还是内存

23330

MySQL索引使用规则总结

如何加快查询,最直接有效办法就是增加索引,在不使用索引情况下试图采用其他方式加快查询就是在浪费时间。本文先介绍下MySQL索引基本数据结构,再对索引基本规则做下总结。...同样,对数据table3使用索引,直接找到与数据table1值相匹配数据行 对数据table1下一个数据行重复上面的过程, 直到检查完数据table1所有数据行。...例如:对班级表格性别字段索引只有两个值’F’,’M’,采用性别别的索引无论怎么查询,得到是数据一半左右记录。MySQL查询优化逻辑甚至不会选择对于这样索引,而改成遍历搜索。...创建了N个列符合索引,实际上创建了MySQL能够使用n个索引。例如某复合索引 index(国家,省份,城市)。...参考: 1、MySQL技术内幕:InnoDB存储引擎 2、MySQL技术内幕:第4版 3、MySQL高效编程 4、MySQL官方手册 5、http://km.oa.com/articles/show/

3.8K00

MySQL - 高效设计MySQL

获取数据时,关联过多,性能较差。 数量越多,查询所需要时间越多。也就是说所用范式越高,对数据操作性能越低。 ---- 反范式 范式是普适规则,满足大多数业务场景需求。...必须要用时,尽量与主业务分离,减少对这类字段检索和更新 ---- 基本设置规则 必须指定默认存储引擎为 InnoDB,并且禁用 MyISAM 存储引擎,随着 MySQL 8.0 版本发布,所有的数据字典都已经转换成了...数据库库名命名规则必须遵循“见名知意”原则,即库名规则为“数据库类型代码 + 项目简称 + 识别代码 + 序号”。...命名规则分为: 单仅使用 a~z、_; 分名称为“名_编号”; 业务名代表用途、内容:子系统简称_业务含义_后缀。...数据库规范库表字段命名,能够提高数据库易读性,为数据库设计打下基础。下面我们具体看看表设计一些规则。 显式指定需要属性; 创建时显示指定字符集、存储引擎、注释信息等。

3.2K12

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券