gpt4 book ai didi

mysql - MySQL 的哪一列应该设置为索引

转载 作者:行者123 更新时间:2023-11-29 07:46:47 25 4
gpt4 key购买 nike

我收到了一封来自服务器主机的电子邮件,告诉我必须优化似乎太慢的数据库请求。

事实上,我在 WordPress 中使用了很多自定义请求,这些请求都指向“wp_postmeta”表。这并不理想,因为您必须处理给定的表结构。

以下是“wp-postmeta”表中的列:

meta_id    (table id)
post_id (related post which is a foreign key)
meta_key (name of the parameter)
meta_value (value of that parameter)

meta_id是表的默认主键,默认没有Wordpress设置的NO索引。

我相信优化请求的最佳方法是将索引分配给这些列之一。

这是我最常见的请求:

SELECT meta_value FROM wp_postmeta WHERE meta_key = 'xxxx' and post_id = 1234 

知道:

  • 同一个 post_id 最多可以有 15 个不同的相关元 key ,并且大约有 900 个不同的 post_id
  • 无论 post_id 是什么,同一个 meta_key 可以在表记录中出现超过 150 次

这两列中哪一列是作为表索引的最佳选择:post_idmeta_key

谢谢。

最佳答案

考虑到您最常见的语句,我建议基于这两列创建一个索引是

SELECT FROM wp_postmeta WHERE meta_key = 'xxxx' and post_id = 1234

MySQL 有一些关于这个主题的很好的文档:http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html

CREATE INDEX index_postmeta_postmeta ON wp_postmeta (post_id, meta_key)

但基本上,索引的作用以及为什么应该使用它的解释如下:What is an index in SQL?

顺便说一句,您本地友好的 DBA 应该为您做这一切:)

此外,这是我个人的经验法则。我在表上的所有外键上创建索引,因为它通常是自然的查找列。所以我可能也会加入:

 CREATE INDEX index_postmeta_postid ON wp_postmeta (post_id)

关于mysql - MySQL 的哪一列应该设置为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com