› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
fuxinya
V2EX  ›  MySQL

MYSQL SELECT 不加 text 类型的字段会对读取速度有帮助吗

  •  
  •   fuxinya · Jul 15, 2021 · 3299 views
    This topic created in 1901 days ago, the information mentioned may be changed or developed.

    有一文章表,字段有:id,title,content等。 其中content字段为text类型,用于存放富文本。

    在进行文章列表检索时: SELCT id, title FROM t1

    SELECT 不加 content 字段会对查询速度有帮助吗(即:MYSQL 扫描行时会不会连带 content 字段一起读取了)?

    考虑到富文本字段一般都好几兆,如果会一起读取,我得考虑把富文本单独放一张表,不然文章一多,读着太慢了。

    Supplement 1  ·  Jul 15, 2021

    结贴。 先说结论,会提升读取速度(不考虑网络传输,仅考虑磁盘IO),text、blob 超过页大小的行,会进行页外存储,产生一个20byte的指针。列是否存储在页外取决于页面大小和行的总大小。 当一行太长时,选择最长的列进行页外存储,直到聚集索引记录适合 B 树页面。 小于或等于 40 字节的 TEXT 和 BLOB 列存储在行中。

    参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/innodb-row-format.html#innodb-row-format-dynamic

    9 replies  •  2021-07-17 17:45:18 +08:00
    monetto
        1
    monetto  
       Jul 15, 2021   ❤️ 1
    个人理解,会的。

    MySQL 底层簇族索引是把主键和数据列放在了一起。所以 CPU 其实影响不是很大。
    但是富文本的话,恐怕会有一些 IO 压力。
    shakoon
        2
    shakoon  
       Jul 15, 2021
    有一定的帮助,但是有限。如果确实用不到的字段那是不应该加到 select 里。
    kiracyan
        3
    kiracyan  
       Jul 15, 2021
    长文本最好单独放一个表 甚至存文件数据库
    fuxinya
        4
    fuxinya  
    OP
       Jul 15, 2021
    @shakoon 文章详情需要检索 content 。文章列表不用检索 content,我现在就怕 虽然 SELECT 没有 content,mysql 检索时会连 content 也读取了。
    fuxinya
        5
    fuxinya  
    OP
       Jul 15, 2021
    @kiracyan 好的,我还是单独弄个文章详情表吧
    ChoateYao
        6
    ChoateYao  
       Jul 15, 2021
    会的,首先读取数据需要一定时间,其次传输数据也需要一定时间。
    littlewing
        7
    littlewing  
       Jul 15, 2021   ❤️ 2
    innodb 对于超过 768 字节的 varchar text 会单独存储,读的时候可以不读
    fuxinya
        8
    fuxinya  
    OP
       Jul 15, 2021
    @littlewing 感谢。那就是说,超过 768 字节,只 SELECT id, title 时,mysql 不会读 content
    512357301
        9
    512357301  
       Jul 17, 2021 via Android
    所以没啥是 mysql 文档解释不清的😂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3924 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 04:10 · PVG 12:10 · LAX 21:10 · JFK 00:10
    ♥ Do have faith in what you're doing.