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/