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

1170 -键规范中使用的BLOB/TEXT列'XXX‘没有键长度

在关系型数据库中,BLOB(Binary Large Object)和TEXT是用于存储大型二进制数据和文本数据的列类型。在键规范中使用BLOB/TEXT列时,需要指定键长度。

键长度是指在创建索引时,对于BLOB/TEXT列的前缀长度进行限制。由于BLOB/TEXT列可以存储非常大的数据,如果不指定键长度,将会导致索引占用过多的存储空间,影响查询性能。

指定键长度可以有效地控制索引的大小,提高查询效率。通常,键长度的选择应该根据实际的数据情况和查询需求来确定。

对于这个问题,可以给出以下完善且全面的答案:

BLOB/TEXT列是用于存储大型二进制数据和文本数据的列类型。在键规范中使用BLOB/TEXT列时,需要指定键长度。键长度是指在创建索引时,对于BLOB/TEXT列的前缀长度进行限制。指定键长度可以有效地控制索引的大小,提高查询效率。

BLOB/TEXT列的优势在于可以存储大量的数据,适用于需要存储图片、音频、视频等大型二进制数据,以及长文本数据的场景。例如,在社交媒体应用中,用户上传的图片和视频可以存储在BLOB列中,用户发表的长文本内容可以存储在TEXT列中。

腾讯云提供了多个与BLOB/TEXT列相关的产品和服务。其中,对象存储(COS)是一种高可靠、低成本的云存储服务,适用于存储和管理大规模的非结构化数据,包括BLOB/TEXT列中的数据。您可以通过腾讯云对象存储(COS)来存储和访问BLOB/TEXT列中的数据。详情请参考腾讯云对象存储(COS)产品介绍:https://cloud.tencent.com/product/cos

总结:BLOB/TEXT列是用于存储大型二进制数据和文本数据的列类型,在键规范中使用时需要指定键长度。腾讯云的对象存储(COS)是一种适用于存储和管理BLOB/TEXT列数据的云存储服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数据库字段及索引设计规范

过大的长度会消耗更多的内存。 2. 避免使用 TEXT,BLOB 数据类型,最常见的 TEXT 类型可以存储 64k 的数据 a....建议把 BLOB 或是 TEXT 列分离到单独的扩展表中 MySQL 内存临时表不支持 TEXT、BLOB 这样的大数据类型,如果查询中包含这样的数据,在排序等操作时,就不能使用内存临时表,必须使用磁盘临时表进行...如果一定要使用,建议把 BLOB 或是 TEXT 列分离到单独的扩展表中,查询时一定不要使用 select * 而只需要取出必要的列,不需要 TEXT 列的数据时不要对该列进行查询。 b....TEXT 或 BLOB 类型只能使用前缀索引 因为 MySQL[1] 对索引字段长度是有限制的,所以 TEXT 类型只能使用前缀索引,并且 TEXT 列上是不能有默认值的 3....禁止给表中的每一列都建立单独的索引 5.6 版本之前,一个 sql 只能使用到一个表中的一个索引,5.6 以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3.

1.1K20

MySQL 中 blob 和 text 数据类型详解

不过数据库并不适合直接存储图片,如果有大量存储图片的需求,请使用对象存储或文件存储,数据库中可以存储图片路径来调用。...对比 varchar ,text 类型有以下特点: text 类型无须指定长度。 若数据库未启用严格的 sqlmode ,当插入的值超过 text 列的最大长度时,则该值会被截断插入并生成警告。...table tb_text add index idx_a (a); ERROR 1170 (42000): BLOB/TEXT column 'a' used in key specification...without a key length mysql> alter table tb_text add index idx_b (b); ERROR 1170 (42000): BLOB/TEXT...总结: 本篇文章介绍了 blob 及 text 字段类型相关知识。虽然数据库规范中一般不推荐使用 blob 及 text 类型,但由于一些历史遗留问题或是某些场景下,还是会用到这两类数据类型的。

7.3K30
  • MySQL开发规范

    、索引设计规范 索引是一把双刃剑,它可以提高查询效率但也会降低插入和更新的速度并占用磁盘空间 单张表中索引数量不超过5个 单个索引中的字段数不超过5个 对字符串使用前缀索引,前缀索引长度不超过...默认使用非空的唯一键 主键建议选择自增或发号器重要的SQL必须被索引: SELECT、UPDATE、DELETE语句的WHERE条件列ORDER BY、GROUP BY、DISTINCT的字段多表...,并降低写操作的性能 不在低基数列上建立索引,例如‘性别’ 不在索引列进行数学运算和函数运算 尽量不要使用外键 外键用来保护参照完整性,可在业务端实现, 对父表和子表的操作会相互影响...,降低可用性INNODB本身对Online DDL的限制 不使用%前导的查询,如like“%xxx”,无法使用索引 不使用反向查询,如not in / not like 无法使用索引,导致全表扫描...,全表扫描导致bufferpool利用降低 五、字段设计规范 尽可能不要使用TEXT、BLOB类型 删除这种值会在数据表中留下很大的"空洞",可以考虑把BLOB或TEXT列分离到单独的表中

    83710

    必要商城MySQL开发规范

    、索引设计规范 索引是一把双刃剑,它可以提高查询效率但也会降低插入和更新的速度并占用磁盘空间 单张表中索引数量不超过5个 单个索引中的字段数不超过5个 对字符串使用前缀索引,前缀索引长度不超过...默认使用非空的唯一键 主键建议选择自增或发号器重要的SQL必须被索引: SELECT、UPDATE、DELETE语句的WHERE条件列ORDER BY、GROUP BY、DISTINCT的字段多表...,并降低写操作的性能 不在低基数列上建立索引,例如‘性别’ 不在索引列进行数学运算和函数运算 尽量不要使用外键 外键用来保护参照完整性,可在业务端实现, 对父表和子表的操作会相互影响...,降低可用性INNODB本身对Online DDL的限制 不使用%前导的查询,如like“%xxx”,无法使用索引 不使用反向查询,如not in / not like 无法使用索引,导致全表扫描...,全表扫描导致bufferpool利用降低 五、字段设计规范 尽可能不要使用TEXT、BLOB类型 删除这种值会在数据表中留下很大的"空洞",可以考虑把BLOB或TEXT列分离到单独的表中

    68310

    58同城30条数据库三十条军规

    (13)禁止使用外键,如果有外键完整性约束,需要应用程序控制 解读:外键会导致表与表之间耦合,update与delete操作都会涉及相关联的表,十分影响sql 的性能,甚至会造成死锁。...,无论是表还是索引中每行中的null的列都需要额外的空间来标识 d)对null 的处理时候,只能采用is null或is not null,而不能采用=、in、、!...=’shenjian’,如果存在name为null值的记录,查询结果就不会包含name为null值的记录 (15)禁止使用TEXT、BLOB类型 解读:会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据...,必须把区分度高的字段放在前面 解读:能够更加有效的过滤数据 六、SQL使用规范 (23)禁止使用SELECT *,只获取必要的字段,需要显示说明列属性 解读: a)读取不需要的列会增加CPU、IO...、NET消耗 b)不能有效的利用覆盖索引 (24)禁止使用INSERT INTO t_xxx VALUES(xxx),必须显示指定插入的列属性 解读:容易在增加或者删除字段后出现程序BUG (25

    47610

    手把手教 | 如何设计高性能数据库表

    大批量,意味着多条 SQL 一次性执行完成,必须确保进行充分的测试,并且在业务低峰时段或者非业务时段执行。 大字段,blob、text 等大字段,尽量少用。...为了存储计算分离,这类功能尽量在程序中实现。这些功能非常不完整,调试、排错、监控都非常困难,相关数据字典也不完善,存在潜在的风险。一般在生产数据库中,禁止使用。 lob、text、enum、set。...不建议使用 TEXT/BLOB: 处理性能差; 行长度变长; 全表扫描代价大。 解决方案:拆分成单独的表。 存储字节越小,占用空间越小。尽量选择合适的整型,如下图所示。 ?...如果值不超过 255 个字节,则列使用一个字节长度;如果值可能需要超过 255 个字节,则列使用两个字节长度。 ? 为什么超过 255 个字节时,必须使用两个字节长度。...这样的设计似乎是可行的,没有创建额外的表和列,仅仅改变了一个字段的数据类型。然而,我们来看看这样的设计所必须承受的性能和数据完整性问题。所有外键都合并在一个单元格内,查询会变成异常困难。

    3.1K23

    58到家的MySQL军规来看看吧,或许对你也有帮助哦

    ,较短的数据类型可以有效的减少索引的磁盘空间,提高索引的缓存效率 c) 无主键的表删除,在row模式的主从架构,会导致备库夯住 禁止使用外键,如果有外键完整性约束,需要应用程序控制 解读:外键会导致表与表之间耦合...,无论是表还是索引中每行中的null的列都需要额外的空间来标识 d)对null 的处理时候,只能采用is null或is not null,而不能采用=、in、、!...=’shenjian’,如果存在name为null值的记录,查询结果就不会包含name为null值的记录 禁止使用TEXT、BLOB类型 解读:会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据...:能够更加有效的过滤数据 六、SQL使用规范 禁止使用SELECT *,只获取必要的字段,需要显示说明列属性 解读: a)读取不需要的列会增加CPU、IO、NET消耗 b)不能有效的利用覆盖索引...c)使用SELECT *容易在增加或者删除字段后出现程序BUG 禁止使用INSERT INTO t_xxx VALUES(xxx),必须显示指定插入的列属性 解读:容易在增加或者删除字段后出现程序BUG

    78510

    Mysql 30条军规

    二、命名规范 (6)只允许使用内网域名,而不是ip连接数据库 (7)线上环境、开发环境、测试环境数据库内网域名遵循命名规范 业务名称:xxx 线上环境:dj.xxx.db 开发环境:dj.xxx.rdb...c)null值需要更多的存储空,无论是表还是索引中每行中的null的列都需要额外的空间来标识。...(15)禁止使用TEXT、BLOB类型 解读:会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据,导致内存命中率急剧降低,影响数据库性能。...六、SQL使用规范 (23)禁止使用SELECT *,只获取必要的字段,需要显示说明列属性 解读: a)读取不需要的列会增加CPU、IO、NET消耗。 b)不能有效的利用覆盖索引。...(24)禁止使用INSERT INTO t_xxx VALUES(xxx),必须显示指定插入的列属性 解读:容易在增加或者删除字段后出现程序BUG。

    34040

    大佬整理的mysql规范,分享给大家

    各表之间相同意义的字段,以去掉模块前缀的表名_字段名命名。 外键字段用表名_字段名表示其关联关系。 表的主键一般都约定成为id,自增类型,是别的表的外键均使用xxx_id的方式来表明。...尽可能不使用TEXT、BLOB类型 禁止在数据库中使用VARBINARY、BLOB存储图片、文件等。建议使用其他方式存储(TFS/SFS),MySQL只保存指针信息。...VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。...不要索引blob/text等字段,不要索引大型字段,这样做会让索引占用太多的存储空间 什么是前缀索引?...存储引擎索引长度的总和不能超过 1000 字节 BLOB 和 TEXT 类型的列只能创建前缀索引 MYSQL 目前不支持函数索引 使用不等于 (!

    1.1K20

    MySQL规范

    过大的长度会消耗更多的内存 2、避免使用TEXT、BLOB数据类型,最常见的TEXT类型可以存储64k的数据 建议把BLOB或是TEXT列分离到单独的扩展表中 Mysql内存临时表不支持TEXT、BLOB...如果一定要使用,建议把BLOB或是TEXT列分离到单独的扩展表中,查询时一定不要使用select * 而只需要取出必要的列,不需要TEXT列的数据时不要对该列进行查询。...TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...1、区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数); 2、尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO性能也就越好); 3、使用最频繁的列放到联合索引的左侧...索引set规范 尽量避免使用外键约束 1、不建议使用外键约束(foreign key),但一定要在表与表之间的关联键上建立索引; 2、外键可用于保证数据的参照完整性,但建议在业务端实现; 3、外键会影响父表和子表的写操作从而降低性能

    1.3K20

    MySQL中的数据类型_请列举MySQL中常见的数据类型

    大家好,又见面了,我是你们的朋友全栈君。   我在网上也搜过很多,就是想知道在数据库中的建表语句的字段类型对应Java实体类中属性的类型是什么。   ...结果网上一套一套的说法不一,完全不一致,有没有一致点的,不会错的!看我,你就有。   ...String – year Date java.util.Date enum String –   有些类型插件没有自动转换过来,我就不列举,这里就列举常用的并且插件能转换过来的,这肯定是对的没错。...3.手机号使用varchar(20),不要使用整数。 4.对于精确浮点型数据存储,需要使用decimal,严禁使用float、double。 5.如无特殊需要,禁止开发人员使用blob。...11.按照规范,每个列定义的时候必须加上comments,我上面举例子偷懒了所以没写。 12.数据库的字符集只能选择utf8mb4,如果需要导出,也需要显式选择utf8mb4作为导出格式。

    1.9K30

    MySQL编程规范

    采用合适的分库分表策略。例如千库十表、十库百表等 尽可能不使用‘text’、‘blob’类型 用‘decimal’代替‘float’和‘double’存储精确浮点数 避免使用‘null’字段。...’存储大小写敏感的变长字符串 禁止在数据库中存储明文密码,把密码加密后存储 少用‘text/blob’,‘varchar’的性能会比‘text’高很多,实在避免不了‘blob’,请拆表 数据库中不允许存储大文件...每行记录物理长度不超过8KB 索引规范 索引的数量要控制: 单张表中索引数量不超过5个 单个索引中的字段数不超过5个 对字符串使⽤用前缀索引,前缀索引长度不超过8个字符 建议优先考虑前缀索引,超过20个长度的字符串列...SQL优先考虑覆盖索引 避免冗余和重复索引 索引要综合评估数据密度和分布以及考虑查询和更新比例 索引禁忌 不在低基数列上建立索引,例如“性别” 不在索引列进行数学运算和函数运算 尽量不使用外键,数据库是稀缺资源...,整个事务的时间长度不要太长 应用中不准使用触发器、函数、存储过程,除非二级主管和DBA特殊批准。

    1.5K10

    MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》

    各表之间相同意义的字段,以去掉模块前缀的表名_字段名命名。 外键字段用表名_字段名表示其关联关系。 表的主键一般都约定成为id,自增类型,是别的表的外键均使用xxx_id的方式来表明。...尽可能不使用TEXT、BLOB类型 禁止在数据库中使用VARBINARY、BLOB存储图片、文件等。建议使用其他方式存储(TFS/SFS),MySQL只保存指针信息。...在存储或检索过程中不进行大小写转换。 VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。...不要索引blob/text等字段,不要索引大型字段,这样做会让索引占用太多的存储空间 什么是前缀索引?...存储引擎索引长度的总和不能超过 1000 字节 BLOB 和 TEXT 类型的列只能创建前缀索引 MYSQL 目前不支持函数索引 使用不等于 (!

    5.7K20

    MySQL数据库设计规范

    规范七,每一个表都需要设置主键。 表没有主键,innodb 会默认设置隐藏的主键列,没有主键的表在定位数据行的时候非常困难,也会降低基于行复制的效率。...如果(也许)需要用 text/lob 类型,建议把这些字段和其他字段分离,放在单独的表中。 规范十三,字段长度定义遵循最小化原则,够用就行,不能贪图方便定义很大的长度。...规范二十二,相同含义的字段在不同表中应使用相同的名称,数据类型及长度必须保持一致。...使用innodb,每一个表都必须有主键。如果没有指定主键,mysql 会选择一个非空的唯一键作为主键。如果都没有,mysql 会自动分配 6-bytes长度的全局的 rowid 隐藏列作为主键。...规范三十,对较长的字符数据类型的字段建索引,优先考虑前缀索引。 规范三十一,低选择性的列不加索引,列外情况:对于状态数据分布非常倾斜的,且查询条件中没有其他更合适索引的字段。

    2.4K20

    Mysql - 数据库面试题打卡第四天

    CHAR 和 VARCHAR 类型在存储和检索方面有所不同 CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255 当 CHAR值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格...在 MyISAM Static 上的所有字段有固定宽度。动态 MyISAM Dynamic 表将具有像 TEXT,BLOB 等字段,以适应 不同长度的数据类型。...在 SELECT 语句的列比较中使用=,, =,>,>,,AND,OR 或 LIKE 运算符。 40、BLOB 和 TEXT 有什么区别?...BLOB 是一个二进制对象,可以容纳可变数量的数据。TEXT 是一个不区分大小写 的 BLOB。...BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小 写,对 TEXT 值不区分大小写。

    1.2K30

    值得收藏:一份非常完整的 MySQL 规范

    ,会造成列上的索 引失效,导致查询效率降低) 二、数据库基本设计规范 1、所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用...过大的长度会消耗更多的内存 2、避免使用TEXT、BLOB数据类型,最常见的TEXT类型可以存储64k的数据 · 建议把BLOB或是TEXT列分离到单独的扩展表中 Mysql内存临时表不支持TEXT、BLOB...如果一定要使用,建议把BLOB或是TEXT列分离到单独的扩展表中,查询时一定不要使用select * 而只需要取出必要的列,不需要TEXT列的数据时不要对该列进行查询。...· TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...· 区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数); · 尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO性能也就越好); · 使用最频繁的列放到联合索引的左侧

    97330

    值得收藏:一份非常完整的 MySQL 规范

    过大的长度会消耗更多的内存 2、避免使用TEXT、BLOB数据类型,最常见的TEXT类型可以存储64k的数据 · 建议把BLOB或是TEXT列分离到单独的扩展表中 Mysql内存临时表不支持TEXT、BLOB...如果一定要使用,建议把BLOB或是TEXT列分离到单独的扩展表中,查询时一定不要使用select * 而只需要取出必要的列,不需要TEXT列的数据时不要对该列进行查询。...· TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...· 区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数); · 尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO性能也就越好); · 使用最频繁的列放到联合索引的左侧...九、索引SET规范 尽量避免使用外键约束 · 不建议使用外键约束(foreign key),但一定要在表与表之间的关联键上建立索引; · 外键可用于保证数据的参照完整性,但建议在业务端实现; · 外键会影响父表和子表的写操作从而降低性能

    76230

    值得收藏:一份非常完整的 MySQL 规范

    过大的长度会消耗更多的内存 2、避免使用TEXT、BLOB数据类型,最常见的TEXT类型可以存储64k的数据 · 建议把BLOB或是TEXT列分离到单独的扩展表中 Mysql内存临时表不支持TEXT、BLOB...如果一定要使用,建议把BLOB或是TEXT列分离到单独的扩展表中,查询时一定不要使用select * 而只需要取出必要的列,不需要TEXT列的数据时不要对该列进行查询。...· TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...· 区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数); · 尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO性能也就越好); · 使用最频繁的列放到联合索引的左侧...九、索引SET规范 尽量避免使用外键约束 · 不建议使用外键约束(foreign key),但一定要在表与表之间的关联键上建立索引; · 外键可用于保证数据的参照完整性,但建议在业务端实现; · 外键会影响父表和子表的写操作从而降低性能

    90130

    数据库设计的基本原则和主要步骤以及应注意什么?

    前言 在数据库设计的时候一般要遵循一些规范,也是工作中总结出来的经验,拿来和大家分享 一、数据库设计的基本原则 把具有同一个主题的数据存储在一个数据表中,“一表一用”。...、单实例表数目必须小于500 3.3.2、单表列数目必须小于30 3.3.3、表必须有主键,例如自增主键 3.3.4、禁止使用外键,如果有外键完整性约束,需要应用程序控制外键会导致表与表之间的耦合,update...,增加数据库处理记录的复杂性 3.4.2、禁止使用TEXT、BLOB类型 会浪费更多的磁盘和空间内存,非必要的大量的大字段查询会淘汰掉热数据,导致内存命中率急剧降低,影响数据库的性能。...*,只获取必要的字段,需要显示说明列属性 读取不需要的列会增加CPU、IO、NET消耗 不能有效的利用覆盖索引 使用select *容易在增加或者删除字段后出现程序BUG 3.6.2、禁止使用insert...into t_xxx values(xxx),必须显示执行插入的列属性 容易在增加或者删除字段后出现程序BUG 3.6.3、禁止使用属性隐式转换 Select uid from t_user where

    2.6K12

    「mysql优化专题」优化之路高级进阶——表的设计及优化(6)

    第三范式:属性(字段)冗余性的约束,即任何字段不能由其他字段派生出来,在通俗点就是:主键没有直接关系的数据列必须消除(消除的办法就是再创建一个表来存放他们,当然外键除外) 当然,其实我们经常打破第三范式...在MySQL中,MyISAM建议使用固定长度代替可变长度列;InnoDB建议使用varchar类型,因为在InnoDB中,内部行存储格式没有区分固定长度和可变长度。...5)text与blob区别:blob保存二进制数据;text保存字符数据,有字符集。text和blob不能有默认值。...实际场景:text与blob主要区别是text用来保存字符数据(如文章,日记等),blob用来保存二进制数据(如照片等)。...: 把不常用的字段单独放在一张表; 把text,blob等大字段拆分出来放在附表中; 经常组合查询的列放在一张表中; 缺点也很明显,需要使用冗余字段,而且需要join操作。

    81620
    领券