问个 Wordpress 数据库的问题,为什么 WP 把 post 和附件放在同一数据表里? - V2EX
freeone

问个 Wordpress 数据库的问题,为什么 WP 把 post 和附件放在同一数据表里?

  •  
  •   freeone Sep 20, 2017 3458 views
    This topic created in 3161 days ago, the information mentioned may be changed or developed.
    因为对 WP 稍微熟点,加上有这么多的主题插件可选,所以打算用 WP 建个图库网站。现在已有 12W 多的图片,1W 多的文章,这样子 wp_posts 这个表纪录就比较可观了,考虑到后续的增加,感觉以后的数据查询可能会比较累。我有点纳闷的是:为什么 WP 会采用这种数据结构,看了下其它的程序,一般文章和图片附件都是分开保存的,难道放在同一表里查询会更有效率?

    昨天发现有个 Photo Gallery 插件,可以实现图片另外保存(它自己有另外的上传方式),但它管理图片非常不便,没有 WP 内置媒体库来得方便。不知还有什么插件可以实现文章和图片分开保存的?
    15 replies    2018-02-14 00:11:37 +08:00
    malagebidi
        1
    malagebidi  
       Sep 20, 2017 via Android
    要不放在站外吧,我觉得除了缩略图功能没啥可留恋的,阿里云 oss 可替代。
    img src="https://cdn.v2ex.com/avatar/cd6d/a270/217112_normal.png?m=1505907105" class="avatar" border="0" align="default" alt="freeone" data-uid="217112" />
        2
    freeone  
    OP
       Sep 20, 2017
    @malagebidi 放在站外,管理起来还是不太方便。如果不考虑空间问题,个人还是倾向站内。
    vicki
        3
    vicki  
       Sep 20, 2017
    自己写一个插件,把图片的数据库表分开就可以了。
    vicki
        4
    vicki  
       Sep 20, 2017
    可能上传的图片方式会不一样。
    loveyu
        5
    loveyu  
       Sep 20, 2017
    因为图片也是可以单独评论或者作为一个页面的,如果我也实现一个类似的功能我可能也会这样干。
    freeone
        6
    freeone  
    OP
       Sep 20, 2017
    @loveyu 这个估计是原因,但是如果分开存的话,也可以处理,只要在评论表里加个 post_type 条目,应该也可以区分检索了。WP 现在这么处理,到底是为了简化还是更有效率呢?
    freeone
        7
    freeone  
    OP
       Sep 20, 2017
    @vicki 自已写插件的话,其实涉及的东西还是比较多的,上传、删除、搜索、管理等等,好多函数都要重写。
    GG668v26Fd55CP5W
        8
    GG668v26Fd55CP5W  
       Sep 20, 2017 via iPhone
    因为文章跟附件甚至自定义的发布类型有很多共同属性,可以使用统一的函数处理,额外的属性又可以通过 post_meta 关联。这样扩展性很好,但实际上数据量一大性能很差,大量的慢查询都是来自这种关联查询。哦,还有 like 全文搜索。我也很苦恼
    litanid
        9
    litanid  
       Sep 20, 2017
    我想不起来,做图片站用 wp 有什么好!
    lianyue
        10
    lianyue  
       Sep 21, 2017
    Wordpress 结构 几乎用了最少的表 做了最多的功能
    allenhu
        11
    allenhu  
       Sep 21, 2017 via Android
    12w 就可观?怎么的也得 1200w 吧
    freeone
        12
    freeone  
    OP
       Sep 21, 2017
    @falcon05 官方的忠告是“千万不要把 meta 查询用在 WP_Query 里,而要用 Taxonomy 查询代替”。https://vip.wordpress.com/documentation/querying-on-meta_value/,不知道你是不是有这种情况? WP 现在应用这么普遍,它的 post_type, post_meta 及 hook 使得好象可以做任何类型的网站,但是目前的数据库结构使得数据量一大就不堪重负,想用 post_type + comment 做个简单的论坛吧,又担心以后转不动,不知道官方以后会不会改数据库结构,做个优秀的 CMS 系统。
    freeone
        13
    freeone  
    OP
       Sep 21, 2017
    @litanid 如果单纯做图片站,估计我也不会用 WP 了。一方面想做个“麻雀虽小”的集文章、图集、论坛功能的小站,另一方面想用 WP 练练级,打算只用一个 WP 程序达到上述功能。
    GG668v26Fd55CP5W
        14
    GG668v26Fd55CP5W  
       Sep 21, 2017 via iPhone
    @freeone 看了一下,确实有这个问题,很多插件都是使用 post_meta 并且放在 wp_query 查询,而不是自定义分类法,可能因为那样简单吧。比如统计文章阅读量的几个插件。还有一些数据比如图片的原始信息也是放在 post_meta。
    yytsjq
        15
    yytsjq  
       Feb 14, 2018
    @freeone

    说的是不要在 WP_Query 中查询 meta_value 吧?

    WordPress postmeta table has an index on meta_key, but not meta_value.

    https://vip.wordpress.com/documentation/querying-on-meta_value/
    About     Help     Advertise     Blog     API     FAQ     Solana     5886 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 07:29 PVG 15:29 LAX 00:29 JFK 03:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86