mysql - MySQL 在执行 "select"时如何使用内存?

原文 标签 mysql memory select

MySQL 在“选择”时如何使用内存? MySQL只能加载选定的列并且不会在其余列上浪费任何内存是对的吗?

例如我有一张 table ,上面有 1.article ID, 2.article content, 3.publish date, 4. edit time, 5. author ID, 6.with_image (binary, 1:yes, image attached, 0:no image).
文章内容是var(5000),实际上平均大小在2000左右。

以这种方式保留一张 table 是个好主意吗?我应该将它与 article_ID 和 article_content 表分开吗?

我的想法是(如果)MySQL 只能加载选定的列,并且不会在其余列上浪费任何内存。那我就用SELECT article_id,author_id,publish_date,edit_time FROM thistable WHERE author_id=requirement ORDER BY publish_date DESC,edit_time DESC limit 50获取 article_id 列表。然后使用SELECT article,article_id WHERE article_id=列表,得到最终结果。

我在某种程度上错了吗?应该修复什么?谢谢你。

最佳答案

对我来说看起来不错 - 是的,查询只会从表中检索所需的列 - 我不是 MySql 专家,但它可能会尝试缓存尽可能多的数据库,因此您无需担心内存服务器端。客户端将只接收查询的数据(查询在服务器上执行,结果通过网络传回)

除非有充分的理由,否则您不需要将表一分为二。通常在单个表上有一堆列是将表重构为多个表的原因,但目前列数看起来不错

关于mysql - MySQL 在执行 "select"时如何使用内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993097/

相关文章:

java - 选择查询很慢

java - 通过嵌入式Glassfish通过Hibernate与MySQL进行数据库连接

php - 将 md5 哈希插入到 mysql 数据库中

java - 对单例封闭实例有隐式引用的匿名类实例会导致内存泄漏吗?

mysql - 连接Mysql中的字段

mysql - 如何在select语句中选择count()

java - 内存主机与Java中的内存参数xms和xmx之间的关系

c++ - 物理内存上的堆和堆栈在哪里?

javascript - JavaScript if语句:当某个值更改为另一个特定值时应用

javascript - 在 PyroCMS 中使用 jQuery 更新下拉列表的选定值