- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚开始使用 Wordpress,不知道要选择什么解决方案。
我必须在 Wordpress 的帖子表中存储超过 200.000 个条目(书籍、CD 等)。这些条目中的每一个都有大约 20 个不同的字段需要填充。
因此,我认为我必须向 posts 表添加新字段以便存储数据。
我正在使用 ACF 自定义字段插件来执行此操作,但我可以看到自定义字段未存储在与发布表相同的表中。它被存储在类别的 wp_options 表和帖子的 postmeta 表中,对于每个要填充的字段,它将在这些表中创建 2 行。
因此,如果我在这个 wp_postmeta 表中保存 20 个字段 X 2 行 X 200.000 个条目,它将使 8.000.000 行通过(可能对性能来说不是那么好)。
使用 Wordpress 完成此任务的最佳方法是什么?
创建一个新表? (我不会利用常规的帖子功能和缓存可能性)
向 post 表添加新字段? (是否兼容WP升级?)
使用 postmeta/option 表? (在这种情况下性能如何?)并继续使用此解决方案?
非常感谢您的帮助
最佳答案
您列出的每种方法都各有利弊:
Create a new table ? (I'll not take benefit of the regular post features and cache possibilities)
优点:性能
缺点:灵 active 、功能
灵 active 通过为每个字段创建一个包含列的表格,您会失去灵 active 。与仅使用元数据相比,添加新字段更加困难。对于具有大量行的表,添加或删除列是一项昂贵的操作,因此如果您需要经常修改架构,这可能不是正确的方法。
功能 使用这种方法,您将无法利用内置方法与元数据进行交互(例如 get_post_meta
)。您还将很难根据元数据查询帖子。您仍然可以缓存您的数据,但您必须手动进行。据我所知,您将无法通过这种方法继续使用 ACF。
性能 从积极的方面来说,将每个字段作为单独表格中的一列可以让您更好地为数据编制索引。这是否对您有利取决于您需要运行的查询。
Use postmeta/option tables ? (what about performances in this case ?) and go ahead with this solution ?
缺点:灵 active 、功能
优点:性能
显然,如果您坚持使用处理元数据的默认方法,您可以继续使用所有内置功能与该数据进行交互。您还可以在不更改表结构的情况下添加或删除元字段。
关于性能,您将无法像使用单独的表那样创建索引来提高查询性能。如果您的查询不能利用 postmeta 表上的索引,这只是一个严重的问题。
请注意,wp_postmeta
在 post_id
和 meta_key
上有索引,但在 meta_value
上没有索引。这意味着如果您根据元值查找记录并且有很多行共享相同的元键,数据库必须查看所有具有特定元键的行以找到具有元键的行您正在寻找的值(value)。
So if I save 20 fields X 2 lines X 200.000 entries in this wp_postmeta table, it will make 8.000.000 lines to go through
根据您的查询,这可能不是一个严重的问题。正如我之前提到的,postmeta 表在 post_id
上有一个索引,所以如果您只是通过 post_id
查找元条目,这不是一个严重的问题。
只要您的查询可以利用索引,800 万行对 MySQL 来说不是问题。
如果您只是根据 post_id
索引进行查询,那不是问题。就内存而言,无论使用哪种方法,您都将需要大致相同的内存量。
Add new fields to the post table ? (will it be compatible with upgrade of WP ?)
这种方法与创建单独的表几乎相同:
我认为这不会导致升级 WordPress 时出现问题。即使升级包括对 wp_posts
表的修改,拥有额外的列也不应该导致问题。在生产升级之前,我肯定会在暂存环境中测试升级。
一般来说,我认为最好避免修改核心 WordPress 功能,包括修改默认表结构。与使用单独的表相比,这种方法不会有任何显着的性能优势,因此我认为最好采用另一种方式。
关于php - 在 Wordpress 的 post 表中创建新字段还是创建新表更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29883973/
我已经制作了一个用于报名参加 Activity 的小应用程序。用户输入他们的数据,然后单击“登录我”。 现在有时人们在数据库中是双倍的,完全相同的数据彼此之间很快被插入了两次。这只能表示某人单击了两次
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: PHP: “Notice: Undefined variable” and “Notice: Undefin
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: PHP: “Notice: Undefined variable” and “Notice: Undefin
我正在尝试将数据从 Textarea 发布到经典的 ASP 脚本,该脚本更新本地计算机上的 MS SQL,然后发布到另一台服务器上的 PHP 脚本。但是,执行以下操作不起作用,因为它会切断文本区域的数
无效的代码: login_form = page.form_with(:method => 'post') 和有效的代码: login_form = page.form_with(:method =>
我希望能够在 HTTP Post 请求被触发时拦截它,然后修改其请求正文(或参数),然后发送它。 这怎么可能用 jquery/js 实现。 谢谢 最佳答案 Jquery ajax beforeSend
我想编写一个 Mysql 语句,从表(发布)中选择所有内容,其中标题类似于 $title 除了 $title 的标题。基本上我想显示某个帖子的所有相关帖子。我希望查询选择表中标题或详细信息中具有标题名
我已经成功创建了一个简单的 HTML 表单,它将上传的文件发布到我的 Amazon S3 存储桶。我遵循了以下说明: http://aws.amazon.com/articles/1434 现在我正在
我正在实现一个 PayPal IPN 页面,并想检查以确保请求真正来自 PayPal 而不是被欺骗。我假设 HTTP_REFERRER 不是一个好的检查方式?我已经尝试过这种方法,但变量只是空的。 有
我有一个非常简单的设置有一个非常特殊的问题。 该设置部署了 nginx Web 服务器以提供一些静态页面。它还有一个用于处理 POST 请求的后端 uwsgi 守护进程。 我的nginx位置配置如下
我认为我做错了什么,或者误解了我在网上阅读的有关 POST 和 GET 请求的内容。我在 myNumber.ejs 上有一个提交表单。当我按下提交时,有 Add.ejs 的 View 。 Add.ej
我需要将数据从 Express 应用程序的前端发送到后端,然后使用需要显示该数据的 EJS 呈现页面。 问题是 app.post() 方法,随后 res.render() 函数似乎没有完全执行或者当我
根据AWS Documentation对于 CloudFormation cfn-hup 帮助程序脚本,cfn-hup Hook 可以具有“要检测的以逗号分隔的条件列表”。这些条件/触发器可以是 po
位于“wp-admin/includes/”的“post.php”文件中的 wordpress 函数“get_default_post_to_edit”无法正常工作。 当我加载页面时:wp-admin
我使用请求库发布数据,但在服务器上收到空主体,没有传递任何数据。我在代码中遗漏了什么吗? Map map = new Map(); map[csrfNameKey] = csrfName;
我正在尝试使用 siege 3.0.1 测试我的网站。但是好像siege不发送POST数据。这是我从网络浏览器收到的请求 POST / HTTP/1.0 Accept: text/html,appli
我正在尝试为 stockfigher 游戏 api 编写包装器,只是为了了解 feign 是如何工作的,而且我在第一个 POST 方法中遇到了问题: @RequestMapping(method =
如何使用 Jersey 获取原始 POST? @FormParam将不起作用,因为我发布的原始 JSON 不在任何特定的 POST 字段中。 最佳答案 Jersey 带有一个用于将 JSON 映射到
我正在尝试同时创建一个实体和两个子实体的实例。 如果我将以下 JSON 发布到/user_objects 资源,它会很高兴地创建父 user_object 实体和链接的 User_object_att
在 IPV6 中如何使用 IPV6 地址和端口号构建 CURL POST http 请求。任何类型的线程都将受到赞赏。 尝试构建如下请求 >curl --interface 'http://[2001
我是一名优秀的程序员,十分优秀!