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

当你在MySQL或PostgreSQL中有一个TEXT字段时,你应该把它放在一个单独的表中吗?

当你在MySQL或PostgreSQL中有一个TEXT字段时,是否将其放在一个单独的表中取决于具体的需求和设计考虑。

在某些情况下,将TEXT字段放在单独的表中可能是有益的。以下是一些考虑因素:

  1. 数据库性能:如果TEXT字段存储的数据量较大,频繁地读取和更新该字段可能会对整个表的性能产生负面影响。将TEXT字段放在单独的表中可以减少对主表的影响,提高数据库的读写性能。
  2. 数据库设计规范:根据数据库设计规范,将具有大量数据或占用大量存储空间的字段放在单独的表中是一种常见的做法。这有助于提高数据库的可维护性和可扩展性。
  3. 数据库范式化:如果TEXT字段的内容与主表的其他字段之间存在一对多的关系,将其放在单独的表中可以更好地实现数据库的范式化设计。

然而,将TEXT字段放在单独的表中也可能带来一些额外的复杂性和开销。以下是一些需要考虑的因素:

  1. 数据关联和查询:将TEXT字段放在单独的表中可能需要进行额外的关联查询,增加了查询的复杂性和开销。
  2. 数据一致性:将TEXT字段放在单独的表中可能需要更多的维护工作,以确保数据的一致性和完整性。

综上所述,是否将TEXT字段放在单独的表中取决于具体的需求和设计考虑。在做出决策时,需要综合考虑数据库性能、设计规范、数据关联和一致性等因素。

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

相关·内容

MySQLPostgreSQL对比

使用jsonb优势还在于可以轻易整合关系型数据和非关系型数据, PostgreSQL对于mongodb这类基于文档数据库是个不小威胁,毕竟如果一个只有一列数据类型是半结构化,没有必要为了迁就而整个设计采用...MySQL 各种text字段有不同限制,要手动区分 small text, middle text, large textPostgreSQL 没有这个限制,text 能支持各种大小。...PostgreSQL只支持对于每一个用户一个数据库上一个数据 INSERT、SELECT和UPDATE/DELETE授权,而MySQL允许定义一整套不同数据级、级和列级权限。...由于索引组织是按一个索引树,一般访问数据块必须按数据块之间关系进行访问,而不是按物理块访问数据,所以当做全扫描要比堆慢很多,这可能在OLTP不明显,但在数据仓库应用可能是一个问题。...如何确定只MySQLPostgreSQL中进行选择,以下规则总是有效: 如果操作系统是Windows,应该使用MySQL

9K10

MySQL“被动”性能优化汇总!

更多性能优化文章 当然,本篇也是关于性能优化,那性能优化就应该梭子?还是要符合一些规范和原则呢? ? 所以,开始之前(MySQL 优化),咱们先来聊聊性能优化一些原则。...; 如果条件中有 or 即使其中有条件带索引也不会正常使用索引,要想使用 or 又想让索引生效,只能将 or 条件每个列都加上索引才能正常使用; where 子句中对字段进行表达式操作。...解决方案 2:数据拆分 当数据量太大 SQL 查询会比较慢,可以考虑拆分,让每张数据量变小,从而提高查询效率。 1.垂直拆分 指的是将进行拆分,一张列比较多拆分为多张。...比如,用户中一些字段经常被访问,将这些字段放在一张,另外一些不常用字段放在另一张,插入数据,使用事务确保两张数据一致性。...垂直拆分原则: 不常用字段单独放在一张 text,blob 等大字段拆分出来放在附表; 经常组合查询放在一张

60320
  • 50多条实用mysql数据库优化建议

    Join时候使用相同类型列,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...如果要保存 NULL,手动去设置,而不是设为默认值。 建议用用0、特殊值空串代替NULL值 41....例如,没有如下类型字段: VARCHAR,TEXT,BLOB。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。

    3.9K60

    django 1.8 官方文档翻译: 1-2-1 编写一个Django应用,第1部分

    SQLite 是内置 Python ,因此不需要安装任何东西来支持数据库。 Note 如果使用 PostgreSQL 或者 MySQL,确保已经创建了一个数据库。...如果感兴趣,可以在你数据库命令行下输入:dt (PostgreSQL), SHOW TABLES; (MySQL), .schema (SQLite) 来列出 Django 所创建。...生成 SQL 语句时针对所使用数据库,会为自动处理特定于数据库字段,例如 auto_increment (MySQL), serial (PostgreSQL), or integer primary...引用字段也是如此 – 比如使用双引号单引号。 本教材作者所使用PostgreSQL,因此例子输出PostgreSQL 语法。...现在,再次运行 syncdb 命令在你数据库创建这些模型对应: python manage.py syncdb syncdb 命令会给 INSTALLED_APPS 中有但数据库没有对应应用执行

    98420

    二十种实战调优MySQL性能优化经验

    Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。这样,MySQL内部会启动为优化JoinSQL语句机制。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...固定长度会更快 如果所有字段都是“固定长度”,整个会被认为是 “static” “fixed-length”。 例如,没有如下类型字段: VARCHAR,TEXT,BLOB。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且在数据库操作时候除了个人信息外,并不需要经常读取或是改写这个字段

    1.1K20

    mysql性能优化几条重要建议

    Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。这样,MySQL内部会启动为优化JoinSQL语句机制。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...固定长度会更快 如果所有字段都是“固定长度”,整个会被认为是 “static” “fixed-length”。 例如,没有如下类型字段: VARCHAR,TEXT,BLOB。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且在数据库操作时候除了个人信息外,并不需要经常读取或是改写这个字段

    98960

    MYSQL性能优化

    Join时候使用相同类型字段,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...固定长度会更快 如果所有字段都是“固定长度”,整个会被认为是 “static” “fixed-length”。 例如,没有如下类型字段: VARCHAR,TEXT,BLOB。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且在数据库操作时候除了个人信息外,并不需要经常读取或是改写这个字段

    1.8K31

    架构面试题汇总:mysql索引全在这!(五)

    如果需要对索引列进行计算函数操作,应考虑将计算结果函数值存储单独,并对该列创建索引。 注意索引长度和类型:索引长度和类型也会影响索引效果和性能。...答案: 前缀索引是MySQL中一种特殊索引类型,允许只对字段前N个字符创建索引,而不是对整个字段值创建索引。这可以节省存储空间并提高索引创建速度。...答案: 联合索引是MySQL中一种特殊索引类型,允许多个列上创建一个索引。联合索引基于多个列值进行排序和存储,可以高效地处理涉及这些列查询条件。...这可以减少跨查询和“回”操作需求。 问题16:能解释一下MySQL全文索引(Full-Text Index)?它在哪些场景下特别有用?...如果使用支持EXPLAIN ANALYZE数据库系统,那么当你需要对查询进行深入性能分析应该使用EXPLAIN ANALYZE。

    21110

    MySQL性能优化最佳20+条经验

    Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...固定长度会更快 如果所有字段都是“固定长度”,整个会被认为是 “static” “fixed-length”。 例如,没有如下类型字段: VARCHAR,TEXT,BLOB。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且在数据库操作时候除了个人信息外,并不需要经常读取或是改写这个字段

    30520

    MySQL 性能优化最佳 20+ 条经验

    Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。这样,MySQL内部会启动为优化JoinSQL语句机制。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...例如,没有如下类型字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个就不是“固定长度静态”了,这样,MySQL 引擎会用另一种方法来处理。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且在数据库操作时候除了个 人信息外,并不需要经常读取或是改写这个字段

    39930

    还有这些MySQL高性能索引优化策略等你试用

    关于MySQL优化,相信很多人都听过这一条:避免使用select*来查找字段,而是要在select后面写上具体字段。 这么做原因相信大家都应该知道:减少数据量传输。...匹配最左前缀:就是多列索引最左前缀原则。例如一个多列索引为(A,B,C),当你查询包括AA,BA,B,C都可以用到索引,如果只有B,则无法用到该索引。...套用《高性能MySQL一个例子: 一张一个字段存储各个城市名字。首先,我们找到最常见城市列表: ? 然后尝试从3个前缀开始: ? 可以看出这个与原来差距还是挺大。...这种索引合并策略是一种优化结果,但也间接说明了索引建很糟糕: 当服务器对多个索引做相交操作(通常是多个AND条件),通常意味着需要一个包含相关列多列索引,而不是多个独立单独索引。...随着经验积累,会有自己索引列排序经验。 5、聚簇索引 聚簇索引并不是一种单独索引类型,而是一种数据存储方式。聚簇索引总是数据行存储叶子页,因此一个只能有一个聚簇索引。

    70320

    MySQL性能优化21条经验

    Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。这样,MySQL内部会启动为优化JoinSQL语句机制。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...例如,没有如下类型字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个就不是“固定长度静态”了,这样,MySQL 引擎会用另一种方法来处理。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且 数据库操作时候除了个 人信息外,并不需要经常读取或是改写这个字段

    67480

    MySQL 性能优化最佳 20+ 条经验

    Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。这样,MySQL内部会启动为优化JoinSQL语句机制。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...例如,没有如下类型字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个就不是“固定长度静态”了,这样,MySQL 引擎会用另一种方法来处理。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且在数据库操作时候除了个 人信息外,并不需要经常读取或是改写这个字段

    32220

    MySQL性能优化最佳20+条经验

    Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join字段是被建过索引。...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个 VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...所以创建联合索引时候一定要注意索引字段顺序,常用查询字段放在最前面 24、必要可以使用force index来强制查询走某个索引 有的时候MySQL优化器采取认为合适索引来检索sql语句,但是可能它所采用索引并不是我们想要...固定长度会更快 如果所有字段都是“固定长度”,整个会被认为是 “static” “fixed-length”。 例如,没有如下类型字段: VARCHAR,TEXT,BLOB。

    61010

    面试官:count(*) 怎么优化?

    03 count (*) 实现方式 count (*) 不同引擎实现方式是不一样: MyISAM:不支持事务,一个总行数存在了磁盘上,因此执行 count (*) 时候会直接返回这个数...至于有 where 条件怎么执行,建议看看海神这篇文章: SELECT COUNT (*) 会造成全扫描当你记录数越来越多时候,计算一个总行数会越来越慢。...05 基于 count (*) 计数方案 基本思路就是:需要自己找一个地方,操作记录行数存起来。 5.1 结果放在 Redis 更新频繁,我第一间肯定是想到 Redis 这神器呀。...其实我们可以利用事务原子性和隔离特性解决这一问题: C 计数器修改和订单数据一个事务。读取计数器和查询最近订单数据也一个事务。看到这里,有没有清晰一点? 我来画个时序图: ?...06 总结 首先, 4 count 对比,我们应该选 count (*),因为 MySQL作做了优化; 第二,count (*) 两种搜索引擎实现是不一样,MyIsam 直接总数存在硬盘

    1.8K40

    Django 1.10文文档-第一个应用Part2-模型和管理站点

    SQLite包含在Python,所以不需要另外安装其他任何东西。当然在你开始第一个真正项目可能想使用一个更健壮数据库比如PostgreSQL来避免未来遇到令人头疼数据库切换问题。...当你编辑mysite/settings.py,请设置TIME_ZONE为自己时区。 INSTALLED_APPS是Django实例中所有Django应用名称。...如果有兴趣,可以运行数据库命令行客户端并输入dt (PostgreSQL), SHOW TABLES; (MySQL).schema (SQLite)来显示Django创建。...处理字段引号也是如此 —— 例如,使用双引号还是单引号; sqlmigrate命令并不会在你数据库上真正运行迁移文件 —— 只是Django 认为需要SQL打印屏幕上以让你能够看到...就是使数据库模式和你改动后模型进行同步。 迁移功能非常强大,可以让你在开发过程不断修改模型而不用删除数据库或者然后再重新生成一个 —— 专注于升级数据库且不丢失数据。

    2.3K60

    MySQL性能优化最佳20+条经验

    可能需要使用MySQL全文索引或是自己做一个索引(比如说:搜索关键词或是Tag什么Join时候使用相当类型例,并将其索引 如果应用程序有很多 JOIN 查询,应该确认两个Join...就算是 users 一个主键叫 “email”字段也别让成为主键。使用 VARCHAR类型来当主键会使用得性能下降。另外,在你程序应该使用ID来构造数据结构。...MySQL也有一个“建议”(见第十条)告诉怎么去重新组织结构。当你一个VARCHAR 字段,这个建议会告诉其改成 ENUM 类型。...例如,没有如下类型字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个就不是“固定长度静态”了,这样,MySQL 引擎会用另一种方法来处理。...(以前,银行做过项目,见过一张有100多个字段,很恐怖) 示例一:Users中有一个字段是家庭地址,这个字段是可选字段,相比起,而且在数据库操作时候除了个人信息外,并不需要经常读取或是改写这个字段

    959120

    Magento 2数据库EAV模型结构

    EAV模型(E ->实体,A -> 属性,V -> 值)简单理解就是分,不需要把所有字段放在主表里,而是按类型存放在不同上。 对于字段项目来说 EAV其实没啥用 效率不高。   ...按照常规做法,比如一个产品所有相关属性都会存放在产品表里,增删改查都是这一个。 EAV模式 就是这些属性按照类型独立分开存放到不同表里。 所有查询属性值时候会比较麻烦 要联查询。...属性是每个实体单独属性(比如name,weight,email)。 值是实体某个属性值。   比如,产品有个属性叫产地(Manufacture),值为中国。...int 对应mysql字段int类型 varchar 对应mysql字段varchar类型 text 对应mysql字段text类型 decimal 对应mysql字段decimal类型 datetime...聪明会觉得,属性分散存在不同表里,如果要查询全部属性的话,要联十几张,是不是太耗资源了?

    2.5K10

    MySQL实战第十四讲-count(*)这么慢,我该怎么办?

    这就是当你记录数越来越多时候,计算一个总行数会越来越慢原因。 那为什么 InnoDB 不跟 MyISAM 一样,也数字存起来呢?...这是因为即使是一个时刻多个查询,由于多版本并发控制(MVCC)原因,InnoDB 应该返回多少行”也是不确定。这里,我用一个算 count(*) 例子来为解释一下。...会话 C 先启动一个单独语句,插入一行记录后,查询总行数。 我们假设从上到下是按照时间顺序执行,同一行语句是同一刻执行。...用缓存系统保存计数 对于更新很频繁库来说,可能会第一间想到,用缓存系统来支持。 可以用一个 Redis 服务来保存这个总行数。...而把计数值也放在 MySQL ,就解决了一致性视图问题。 InnoDB 引擎支持事务,我们利用好事务原子性和隔离性,就可以简化在业务开发逻辑。这也是 InnoDB 引擎备受青睐原因之一。

    1.6K10

    MySQL深入学习第十四篇-count(*)这么慢,我该怎么办?

    这就是当你记录数越来越多时候,计算一个总行数会越来越慢原因。 那为什么 InnoDB 不跟 MyISAM 一样,也数字存起来呢?...这是因为即使是一个时刻多个查询,由于多版本并发控制(MVCC)原因,InnoDB 应该返回多少行”也是不确定。这里,我用一个算 count(*) 例子来为解释一下。...会话 C 先启动一个单独语句,插入一行记录后,查询总行数。 我们假设从上到下是按照时间顺序执行,同一行语句是同一刻执行。 如下 图1 所示为会话 A、B、C 执行流程: ?...用缓存系统保存计数 对于更新很频繁库来说,可能会第一间想到,用缓存系统来支持。 可以用一个 Redis 服务来保存这个总行数。...而把计数值也放在 MySQL ,就解决了一致性视图问题。 InnoDB 引擎支持事务,我们利用好事务原子性和隔离性,就可以简化在业务开发逻辑。这也是 InnoDB 引擎备受青睐原因之一。

    1.7K10
    领券