我收到了服务器主机发来的电子邮件,告诉我必须优化我的数据库请求,这些请求似乎太慢了。
实际上,我在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是表格的默认主键,默认情况下有 NO 索引由Wordpress设置。
我认为优化请求的最佳方式将是为这些列之一分配索引。
所以这是我最常见的请求:
SELECT meta_value FROM wp_postmeta WHERE meta_key = 'xxxx' and post_id = 1234
知道:
这两列中的哪一列是表格索引的最佳选择: post_id 或 meta_key ?
谢谢。
答案 0 :(得分:2)
我建议根据您最常用的声明创建基于两列的索引 是
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应该为你做这一切BTW:)
另外,这是我个人的经验法则。我在表上的所有外键上创建索引,因为它通常是一个自然的查找列。所以我可能也会匆匆进入:
CREATE INDEX index_postmeta_postid ON wp_postmeta (post_id)