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

标签 mysql memory select

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

例如我有一张表 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/

相关文章:

python - 为什么 python 实现使用的内存比 C 多 9 倍?

c - 获取进行(非法)内存访问的函数名称

numpy - 步幅如何帮助遍历 numpy 中的数组?

mysql - 根据mysql中的用户输入选择记录

c - linux:select的第一个参数

php - 删除到 table1 不产生错误

mysql - LEFT JOIN 无法按预期使用子查询

c# - MySql 异常 : The timeout period elapsed prior to obtaining a connection from the pool

mysql - 创建没有 mysql 表的自定义类型

java - 如何在selenium中打印通过 'selectByVisibleText'方法选择的所选选项的文本