为了在Wordpress中进行更快的查询,是否可以将索引添加到wp\\U POSTETA表中的meta\\U value列?
wp\\U Posteta表中有大约500万行,当限制为500行时,我的查询大约需要3秒钟。
我试图在phpMyAdmin中为meta\\u值添加索引,但收到一条错误消息,上面说:
键规范中使用的“meta\\u value”列没有键长度
我曾考虑将其转换为varchar(255),但我有一个元值\\u wp\\u attachment\\u metadata,大约1500个字符长。
我的查询如下所示:
Array
(
[posts_per_page] => 500
[orderby] => name
[order] => ASC
[post_type] => company
[post_status] => publish
[meta_query] => Array
(
[relation] => OR
[0] => Array
(
[key] => example1
[value] => 2
[type] => numeric
[compare] => =
)
[1] => Array
(
[key] => example2
[value] => 2
[type] => numeric
[compare] => =
)
[2] => Array
(
[key] => example3
[value] => 2
[type] => numeric
[compare] => =
)
[3] => Array
(
[key] => example3
[value] => 2
[type] => numeric
[compare] => =
)
)
)
SO网友:janh
不要限制字段,而是限制索引,例如。
ALTER TABLE wp_postmeta ADD key(meta_value(100))
这将索引限制为meta\\u值的前100个字节。
您可能需要一个关于post\\u id、meta\\u key、meta\\u值的索引来进行连接。例如,需要多少meta\\u键和meta\\u值取决于您的数据
ALTER TABLE wp_postmeta ADD key(post_id, meta_key(100), meta_value(100));
这是否有助于您的查询是另一个问题。获取生成的SQL
$query->request
然后用“EXPLAIN$SQL”运行它,看看MySQL是如何处理它的,使用了哪些索引等等。
SO网友:lkraav
奥利·琼斯正在与https://wordpress.org/plugins/index-wp-mysql-for-speed/ 马上
他目前对现代梭鱼存储引擎支持的表的建议是
ALTER TABLE wp_postmeta
ADD UNIQUE KEY meta_id (meta_id),
DROP PRIMARY KEY,
ADD PRIMARY KEY (post_id, meta_key, meta_id),
DROP KEY meta_key,
ADD KEY meta_key (meta_key, meta_value(32), post_id, meta_id),
ADD KEY meta_value (meta_value(32), meta_id),
DROP KEY post_id;
请参见
https://www.plumislandmedia.net/index-wp-mysql-for-speed/tables_and_keys/ 有关详细信息。