只扫描索引而无需回表的优点: 1.索引条目通常远小于数据行大小,只需要读取索引,则mysql会极大地减少数据访问量。...(innodb的二级索引在叶子节点中保存了行的主键值,所以如果二级主键能够覆盖查询,则可以避免对主键索引的二次查询) 覆盖索引必须要存储索引列的值,而哈希索引、空间索引和全文索引不存储索引列的值,所以mysql...当发起一个索引覆盖查询时,在explain的extra列可以看到using index的信息 覆盖索引的坑:mysql查询优化器会在执行查询前判断是否有一个索引能进行覆盖,假设索引覆盖了where条件中的字段...如上图则无法使用覆盖查询,原因: 1.没有任何索引能够覆盖这个索引。因为查询从表中选择了所有的列,而没有任何索引覆盖了所有的列。 2.mysql不能在索引中执行LIke操作。...mysql能在索引中做最左前缀匹配的like比较,但是如果是通配符开头的like查询,存储引擎就无法做比较匹配。
参考: http://dinglin.iteye.com/blog/1681332 单列索引的长度的限制 (5.6里面默认不能超过767bytes,5.7不超过3072bytes): 起因是...这个3是字符最大占用空间(utf8)。但是在5.5以后,开始支持4个字节的uutf8。...--- by 阿里-丁奇 在MySQL5.6里默认 innodb_large_prefix=0 限制单列索引长度不能超过767bytes 官网文档:https://dev.mysql.com/doc...在MySQL5.7里默认 innodb_large_prefix=1 解除了767bytes长度限制,但是单列索引长度最大还是不能超过3072bytes 联合索引的长度的限制 (不能超过3072bytes...又由于InnoDB的聚簇索引结构,一个二级索引要包含主键索引,因此每个单个索引不能超过4k (极端情况,primay-key和某个二级索引都达到这个限制)。
这个就是因为联合所以长度限制的。 我们来看看MySql InnoDB引擎对索引长度的限制: mysql单索引限制: 在默认情况下,InnoDB对单一的字段索引长度限制最大为767个字节。...这个长度怎么来的呢 ?当mysql创建数据库的时候,字符集使用的是UTF-8的时候,我们知道UTF-8每个字符使用三个字节来存储的。即:256*3-1=767了。...这个767字符大小的限制就是从这里来的。 联合索引(前缀索引)限制: 同样的,mysql对前缀索引也有同样的限制。根据字符集不同,长度限制也不同。...字符集使用utf8的时候长度限制是:767个 使用uft8mb4的时候长度限制是:3072个 但是,在文章一开始,凯哥就强调了,凯哥数据库使用的字符集是:utf8mb4。...如果没有开启这个,InnoDB会对,无论什么表索引键长度限制都是767了。 解决方案有两种: 1:mysql系统变量innodb_large_prefix开启。
前两天同事提了一个问题,MySQL 5.7 中给某张表字段增加一个单键值索引,提示了如下错误, 一些背景信息: 表设置的字符集,utf8mb4 。 表的存储引擎,MyISAM 。...我们知道,MySQL 和 Oracle 在索引上最大的一个区别,就是索引存在长度的限制。如果是超长键值,可以支持创建前缀的索引,顾名思义,取这个字段的前多少个字符/字节作为索引的键值。...MySQL 官方手册索引的章节提到了,前缀索引长度限制是和引擎相关的,如果用的是 InnoDB ,前缀上限是 767 字节,当启用 innodb_large_prefix 时,上限可以达到 3072 字节...InnoDB ,如果需要建索引,就不能超过 767bytes ,utf8 编码,2553=765 bytes ,是能建索引情况下的最大值,utf8mb4 编码,默认字符长度则应该是767除以4向下取整,...=utf8 COLLATE=utf8_bin; c1 能创建索引,c2 创建出错,utf8 编码,varchar 最大限制 333 个字符, /* 可执行 */ create index idx_test2
MySQL中还会对索引键的长度有限制?.../en/create-index.html 前缀的长度限制,是和存储引擎相关的。...再看一下《MySQL 5.7 Reference Manual》,相同章节中,多了这段描述,是说当使用CREATE INDEX时,如果指定的索引前缀长度超过了列定义的长度上限,则会出现以下两种场景, 非唯一索引...,限制为了255,按照计算,255*3=765<767,这个应该是utf8字符集能支持字符个数上限, P.S....,换算成utf8,或者utf8mb4,至少是255或者191个字符的长度,一个单键值索引,如果达到这长度,就得考虑下索引字段的选择是否合理了,当然如果是几个字段组成的复合索引,达到这个长度,合理不合理,
characterset: utf8 结论: 1、int:固定占用4个字节 2、不同字符集占用字节数不同: 3、latin1:2个字节 4、utf8:3个字节 5、是否为空占用1个字节,not null...不占用字节 6、变长字段需要记录长度占用2个字节 7、索引长度计算公式:varchar(20)*3+1+2=63
里默认 innodb_large_prefix=0 限制单列索引长度不能超过767bytes。...在MySQL5.7里默认 innodb_large_prefix=1 解除了767bytes长度限制,但是单列索引长度最大还是不能超过3072bytes。...https://dev.mysql.com/doc/refman/8.0/en/create-index.html varchar(n)占用几个字节跟字符集有关系: 字符类型若为gbk,每个字符占用2个字节...,这个就是我们说的前缀索引 修改单个索引的最大长度 修改索引限制长度需要在my.ini配置文件中添加以下内容,并重启: #修改单列索引字节长度为767的限制,单列索引的长度变为3072 innodb_large_prefix...上面我们说到可以通过前缀索引来解决索引长度超出限制的问题,但是我们改如何确定索引字段取多长的前缀才合适呢?
下面列出了目前 MySQL中与索引使用相关的限制 (1)MyISAM存储引擎索引键长度的总和不能超过1000字节 (2)BLOB和TEXT类型的列只能创建前缀索引 (3)MySQL目前不支持函数索引 (...=或者)的时候,MySQL无法使用索引 (5)过滤字段使用了函数运算(如abs(column))后,MySQL无法使用索引 (6)Join语句中Join条件字段类型不一致的时候,MySQL无法使用索引...(7)使用LIKE操作的时候如果条件以通配符开始(如'%abc...')时,MySQL无法使用索引 (8)使用非等值查询的时候,MySQL无法使用Hash索引
1.所有的索引字段,如果没有设置not null,则需要加一个字节。 2.定长字段,int占4个字节、date占3个字节、char(n)占n个字符。...3.变长字段,varchar(n),则有n个字符+两个字节。 4.不同的字符集,一个字符占用的字节数不同。...latin1编码的,一个字符占用1个字节,gbk编码的,一个字符占用2个字节,utf8编码的,一个字符占用3个字节。...utf8mb4是一个字符占4个字节 5.使用explain语句查询到的key_len字段,可以适用于上面的计算规则,可以看到查询是否使用到了联合索引 6.mysql优化器会对条件中的 and的前后顺序根据多列索引顺序自动纠正过来...通过索引的长度查看下面sql语句是否使用到了索引 CREATE TABLE `index_test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT
字符串的长度超过了为 maxJsonLength 属性设置的值。...这个异常是在执行MVC中的JsonResult的时抛出的,根据异常的Message得知是序列化的字符串超出了maxJsonLength的限制。
shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString )string; { //string就是此时输入的那个字符
在mysql中的group_concat函数默认支持的最大字符数为1024。 当你使用group_concat函数时,超出第1024字符的字符会全部丢失。 今天就被这个问题搞了一两个小时。...获得group_concat的最大长度 SELECT @@global.group_concat_max_len; 或者 show variables like "group_concat_max_len..."; 一看自己的mysql中group_concat的最大限制 发现等于1024 解决方法: 1.使用sql设置group_concat的最大长度 SET GLOBAL group_concat_max_len...=102400; SET SESSION group_concat_max_len=102400; 但是这种方式在重启mysql后就无效。...2.在MySQL配置文件中my.conf或my.ini中添加: #[mysqld] group_concat_max_len=102400 然后重启mysql服务
Mysql中索引长度key_len探索 表结构 mysql> desc emp; +--------------+---------------+------+-----+---------------...------+------+-----+-------------------+-----------------------------+ 12 rows in set (0.07 sec) 表中的索引...mysql> show index from emp; +-------+------------+----------------+--------------+-------------+----...----------+--------+------+------------+---------+---------------+ 6 rows in set (0.08 sec) explain mysql...-+---------------+-----------+---------+-------+------+----------+-------+ 1 row in set (0.10 sec) mysql
Http get方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制。 目前说的get长度有限制,是特定的浏览器及服务器对它的限制。...Firefox:对Firefox浏览器URL的最大长度为65536个字符。 Safari: 对Safari浏览器URL的最大长度为80000个字符。...Opera: 对Opera浏览器URL的最大长度为190000个字符。 Google(chrome):对Google浏览器URL的最大长度为8182个字符。...Microsoft Internet Information Server(IIS):对IIS浏览器URL的最大长度为16384个字符。 理论上讲,post是没有大小限制的。...注意:(若长度超限,则服务端返回414标识) 1、首先即使有长度限制,也是限制的是整个URI长度,而不仅仅是你的参数值数据长度。
URL长度限制(单位:字符) IE : 2803 Firefox:65536 Chrome:8182 Safari:80000 Opera:190000 2....Post数据的长度限制 Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。 3....Cookie的长度限制 Cookie的长度限制分这么几个方面来总结。...(2) 浏览器所允许的每个Cookie的最大长度 Firefox和Safari:4079字节 Opera:4096字节 IE:4095字节 (3) 服务器中Http请求头长度的限制。...对于LocalStorage的长度限制,同Cookie的限制类似,也是浏览器针对域来限制,只不过cookie限制的是个数,LocalStorage限制的是长度: Firefox\Chrome\Opera
您可以使用SUBSTRING()MySQL来限制字符串的长度。...创建表的查询如下mysql> create table limitLengthOfLongTextDemo -> ( -> sentence LONGTEXT -> ); 使用insert命令在表中插入一些记录...查询如下mysql> insert into limitLengthOfLongTextDemo values(‘This is the introduction to MySQL’); mysql>...an Object Oriented Programming Language | +——————————————————+ 3 rows in set (0.00 sec) 这是获取给定值字符的查询...mysql> select substring(sentence,1,26) as 26Characters from limitLengthOfLongTextDemo; 以下是输出+————————
以前没注意过这些比对算法对长度的要求,此文记录一下。...MUSCLE再linux上的使用之前介绍过: Linux下运行MUSCLE MUSCLE对序列长度没有明确的限制,但是使用32位软件的时候,能够出结果的最大长度约为10,000。
http 1.1 协议原文 http 1.1 协议中对url的长度是不受限制的,协议原文: // https://www.ietf.org/rfc/rfc2616.txt 3.2.1 General...翻译: HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生...注:服务器在依赖大于255字节的URI时应谨慎,因为一些旧的客户或代理实现可能不支持这些长度。...协议中未明确对url进行长度限制,但在真正实现中,url的长度还是受到限制的,一是服务器端的限制,二就是浏览器端的限制。...长度限制 服务器端 nginx nginx服务器默认的限制是4K或者8K 设置参数:large_client_header_buffers 浏览器端 浏览器 最大长度(字符数) 备注 Internet
一、MySQL 限制回顾 之前在《MySQL Text 字段的限制》一文中讲过了关于 MySQL 在 Server 层和 InnoDB 层的限制,但是限制的算法没有详细展开,这里进行补充说明,先回顾一下...MySQL 的两个限制: 1....三、InnoDB 层限制的计算方法 3.1 计算过程 InnooDB 层面如果出现长度超过限制,报错如下所示: ERROR 1118 (42000): Row size too large (> 8126...1 : 2; if (field->prefix_len) { /* 建表判断长度时,直接走else即可,这里会在建立二级索引时用到,但是和聚集索引不是一颗B_Tree,因此可以忽略...定长的为显示指定的 字符数*字符宽度 - 例如 char(10), 在 utf8mb4 里面,字节为 40 2.
llength 借助llength命令可获取列表的长度(列表所包含的元素的个数,不难发现很多跟列表相关的命令都是以英文单词l(其大写为L)开头的)。图1显示列表a的长度为3。 ?...因此,图2中列表的长度为3。 ? 对于空列表,列表的长度为0。据此可判断一个列表是否为空。 ? lindex 类似于C语言中的数组,列表的索引从0开始。...索引0对应第一个元素,索引1对应第二元素,依此类推。同时,Tcl还提供了索引end,可快速获取最后一个元素,这样end-1(注意这里没有空格)就对应倒数第二个元素。...以图1中的列表a为例,各元素的索引如图4所示。 ? 通过命令lindex可获取列表指定索引的元素,仍以图1中的列表a为例,lindex的使用方法如图5所示。...结论 -命令llength可获取列表长度 -空列表的长度为0 -命令lindex可获取指定索引的列表元素
领取专属 10元无门槛券
手把手带您无忧上云