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

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

昨天发现有个 Photo Gallery 插件,可以实现图片另外保存(它自己有另外的上传方式),但它管理图片非常不便,没有 WP 内置媒体库来得方便。不知还有什么插件可以实现文章和图片分开保存的?
2742 次点击
所在节点    WordPress
15 条回复
malagebidi
2017-09-20 20:10:54 +08:00
要不放在站外吧,我觉得除了缩略图功能没啥可留恋的,阿里云 oss 可替代。
freeone
2017-09-20 20:19:26 +08:00
@malagebidi 放在站外,管理起来还是不太方便。如果不考虑空间问题,个人还是倾向站内。
vicki
2017-09-20 20:41:38 +08:00
自己写一个插件,把图片的数据库表分开就可以了。
vicki
2017-09-20 20:42:27 +08:00
可能上传的图片方式会不一样。
loveyu
2017-09-20 20:50:28 +08:00
因为图片也是可以单独评论或者作为一个页面的,如果我也实现一个类似的功能我可能也会这样干。
freeone
2017-09-20 21:28:03 +08:00
@loveyu 这个估计是原因,但是如果分开存的话,也可以处理,只要在评论表里加个 post_type 条目,应该也可以区分检索了。WP 现在这么处理,到底是为了简化还是更有效率呢?
freeone
2017-09-20 21:30:20 +08:00
@vicki 自已写插件的话,其实涉及的东西还是比较多的,上传、删除、搜索、管理等等,好多函数都要重写。
falcon05
2017-09-20 23:08:57 +08:00
因为文章跟附件甚至自定义的发布类型有很多共同属性,可以使用统一的函数处理,额外的属性又可以通过 post_meta 关联。这样扩展性很好,但实际上数据量一大性能很差,大量的慢查询都是来自这种关联查询。哦,还有 like 全文搜索。我也很苦恼
litanid
2017-09-20 23:30:04 +08:00
我想不起来,做图片站用 wp 有什么好!
lianyue
2017-09-21 00:19:58 +08:00
Wordpress 结构 几乎用了最少的表 做了最多的功能
allenhu
2017-09-21 08:21:06 +08:00
12w 就可观?怎么的也得 1200w 吧😄
freeone
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
2017-09-21 17:56:02 +08:00
@litanid 如果单纯做图片站,估计我也不会用 WP 了。一方面想做个“麻雀虽小”的集文章、图集、论坛功能的小站,另一方面想用 WP 练练级,打算只用一个 WP 程序达到上述功能。
falcon05
2017-09-21 19:26:21 +08:00
@freeone 看了一下,确实有这个问题,很多插件都是使用 post_meta 并且放在 wp_query 查询,而不是自定义分类法,可能因为那样简单吧。比如统计文章阅读量的几个插件。还有一些数据比如图片的原始信息也是放在 post_meta。
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/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX