V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
freeone
V2EX  ›  WordPress

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

  •  
  •   freeone · 2017-09-20 19:48:22 +08:00 · 2908 次点击
    这是一个创建于 2658 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为对 WP 稍微熟点,加上有这么多的主题插件可选,所以打算用 WP 建个图库网站。现在已有 12W 多的图片,1W 多的文章,这样子 wp_posts 这个表纪录就比较可观了,考虑到后续的增加,感觉以后的数据查询可能会比较累。我有点纳闷的是:为什么 WP 会采用这种数据结构,看了下其它的程序,一般文章和图片附件都是分开保存的,难道放在同一表里查询会更有效率?

    昨天发现有个 Photo Gallery 插件,可以实现图片另外保存(它自己有另外的上传方式),但它管理图片非常不便,没有 WP 内置媒体库来得方便。不知还有什么插件可以实现文章和图片分开保存的?
    15 条回复    2018-02-14 00:11:37 +08:00
    malagebidi
        1
    malagebidi  
       2017-09-20 20:10:54 +08:00 via Android
    要不放在站外吧,我觉得除了缩略图功能没啥可留恋的,阿里云 oss 可替代。
    freeone
        2
    freeone  
    OP
       2017-09-20 20:19:26 +08:00
    @malagebidi 放在站外,管理起来还是不太方便。如果不考虑空间问题,个人还是倾向站内。
    vicki
        3
    vicki  
       2017-09-20 20:41:38 +08:00
    自己写一个插件,把图片的数据库表分开就可以了。
    vicki
        4
    vicki  
       2017-09-20 20:42:27 +08:00
    可能上传的图片方式会不一样。
    loveyu
        5
    loveyu  
       2017-09-20 20:50:28 +08:00
    因为图片也是可以单独评论或者作为一个页面的,如果我也实现一个类似的功能我可能也会这样干。
    freeone
        6
    freeone  
    OP
       2017-09-20 21:28:03 +08:00
    @loveyu 这个估计是原因,但是如果分开存的话,也可以处理,只要在评论表里加个 post_type 条目,应该也可以区分检索了。WP 现在这么处理,到底是为了简化还是更有效率呢?
    freeone
        7
    freeone  
    OP
       2017-09-20 21:30:20 +08:00
    @vicki 自已写插件的话,其实涉及的东西还是比较多的,上传、删除、搜索、管理等等,好多函数都要重写。
    falcon05
        8
    falcon05  
       2017-09-20 23:08:57 +08:00 via iPhone
    因为文章跟附件甚至自定义的发布类型有很多共同属性,可以使用统一的函数处理,额外的属性又可以通过 post_meta 关联。这样扩展性很好,但实际上数据量一大性能很差,大量的慢查询都是来自这种关联查询。哦,还有 like 全文搜索。我也很苦恼
    litanid
        9
    litanid  
       2017-09-20 23:30:04 +08:00
    我想不起来,做图片站用 wp 有什么好!
    lianyue
        10
    lianyue  
       2017-09-21 00:19:58 +08:00
    Wordpress 结构 几乎用了最少的表 做了最多的功能
    allenhu
        11
    allenhu  
       2017-09-21 08:21:06 +08:00 via Android
    12w 就可观?怎么的也得 1200w 吧😄
    freeone
        12
    freeone  
    OP
       2017-09-21 17:48:59 +08:00
    @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
       2017-09-21 17:56:02 +08:00
    @litanid 如果单纯做图片站,估计我也不会用 WP 了。一方面想做个“麻雀虽小”的集文章、图集、论坛功能的小站,另一方面想用 WP 练练级,打算只用一个 WP 程序达到上述功能。
    falcon05
        14
    falcon05  
       2017-09-21 19:26:21 +08:00 via iPhone
    @freeone 看了一下,确实有这个问题,很多插件都是使用 post_meta 并且放在 wp_query 查询,而不是自定义分类法,可能因为那样简单吧。比如统计文章阅读量的几个插件。还有一些数据比如图片的原始信息也是放在 post_meta。
    yytsjq
        15
    yytsjq  
       2018-02-14 00:11:37 +08:00
    @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/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2975 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:11 · PVG 22:11 · LAX 06:11 · JFK 09:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.