Title: Index WP MySQL For Speed
Author: OllieJones
Published: <strong>2021 年 6 月 13 日</strong>
Last modified: 2026 年 1 月 26 日

---

搜索插件

![](https://ps.w.org/index-wp-mysql-for-speed/assets/banner-772x250.png?rev=2652667)

![](https://ps.w.org/index-wp-mysql-for-speed/assets/icon-128x128.png?rev=2652667)

# Index WP MySQL For Speed

 作者：[OllieJones](https://profiles.wordpress.org/olliejones/)

[下载](https://downloads.wordpress.org/plugin/index-wp-mysql-for-speed.1.5.6.zip)

 * [详情](https://cn.wordpress.org/plugins/index-wp-mysql-for-speed/#description)
 * [评价](https://cn.wordpress.org/plugins/index-wp-mysql-for-speed/#reviews)
 *  [安装](https://cn.wordpress.org/plugins/index-wp-mysql-for-speed/#installation)
 * [开发进展](https://cn.wordpress.org/plugins/index-wp-mysql-for-speed/#developers)

 [支持](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/)

## 描述

#### How do I use this plugin?

After you install and activate this plugin, visit the Index MySQL Tool under the
Tools menu. From there you can press the _Add Keys Now_ button. If you have large
tables, use it with [WP-CLI](https://wp-cli.org/) instead to avoid timeouts. See
the WP-CLI section to learn more.

#### What does it do for my site?

This plugin works to make your MySQL database work more efficiently by adding high-
performance keys to the tables you choose. On request it monitors your site’s use
of your MySQL database to detect which database operations are slowest. It is most
useful for large sites: sites with many users, posts, pages, and / or products.

You can use it to restore WordPress’s default keys if need be.

#### What is this all about?

Where does WordPress store all that stuff that makes your site great? Where are 
your pages, posts, products, media, users, custom fields, metadata, and all your
valuable content? All that data is in the [MySQL](https://www.mysql.com/) relational
database management system. (Many hosting providers and servers use the [MariaDB](https://mariadb.org/)
fork of the MySQL software; it works exactly the same way as MySQL itself.)

As your site grows, your MySQL tables grow. Giant tables can make your page loads
slow down, frustrate your users, and even hurt your search-engine rankings. And,
bulk imports can take absurd amounts of time. What can you do about this?

You can install and use a database cleaner plugin to get rid of old unwanted data
and reorganize your tables. That makes them smaller, and therefore faster. That 
is a good and necessary task. That is not the task of this plugin. You can, if your
hosting provider supports it, install and use a [Persistent Object Cache plugin](https://developer.wordpress.org/reference/classes/wp_object_cache/#persistent-cache-plugins)
to reduce traffic to your database. That is not the task of this plugin either.

This plugin adds database [keys](https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html)(
also called indexes) to your MySQL tables to make it easier for WordPress to find
the information it needs. All relational database management systems store your 
information in long-lived _tables_. For example, WordPress stores your posts and
other content in a table called _wp\_posts_, and custom post fields in another table
called _wp\_postmeta_. A successful site can have thousands of posts and hundreds
of thousands of custom post fields. MySQL has two jobs:

 1. Keep all that data organized.
 2. Find the data it needs quickly.

To do its second job, MySQL uses database keys. Each table has one or more keys.
For example, `wp_posts` has a key to let it quickly find posts when you know the
author. Without its _post\_author_ key MySQL would have to scan every one of your
posts looking for matches to the author you want. Our users know what that looks
like: slow. With the key, MySQL can jump right to the matching posts.

In a new WordPress site with a couple of users and a dozen posts, the keys don’t
matter very much. As the site grows the keys start to matter, a lot. Database management
systems are designed to have their keys updated, adjusted, and tweaked as their 
tables grow. They’re designed to allow the keys to evolve without changing the content
of the underlying tables. In organizations with large databases adding, dropping,
or altering keys doesn’t change the underlying data. It is a routine maintenance
task in many data centers. If changing keys caused databases to lose data, the MySQL
and MariaDB developers would hear howling not just from you and me, but from many
heavyweight users. (You should still back up your WordPress instance of course.)

Better keys allow WordPress’s code to run faster _without any code changes_. Experience
with large sites shows that many MySQL slowdowns can be improved by better keys.
Code is poetry, data is treasure, and database keys are grease that makes code and
data work together smoothly.

#### Which tables does the plugin add keys to?

This plugin adds and updates keys in these WordPress and WooCommerce tables.

 * wp_comments
 * wp_commentmeta
 * wp_posts
 * wp_postmeta
 * wp_termmeta
 * wp_users
 * wp_usermeta
 * wp_options
 * wp_wc_orders_meta
 * wp_woocommerce_order_itemmeta
 * wp_automatewoo_log_meta

You only need run this plugin once to get its benefits.

#### How can I monitor my database’s operation?

On the Index MySQL page (from your Tools menu on your dashboard), you will find 
the “Monitor Database Operations” tab. Use it to request monitoring for a number
of minutes you choose.

You can monitor

 * either the site (your user-visible pages) or the dashboard, or both.
 * all pageviews, or a random sample. (Random samples are useful on very busy sites
   to reduce monitoring overhead.)

Once you have gathered monitoring information, you can view the captured queries,
and sort them by how long they take. Or you can save the monitor information to 
a file and show it to somebody who knows about database operations. Or you can upload
the monitor to the plugin’s servers so the authors can look at it.

It’s a good idea to monitor for a five-minute interval at a time of day when your
site is busy. Once you’ve completed a monitor, you can examine it to determine which
database operations are slowing you down the most.

Please consider uploading your saved monitors to the plugin’s servers. It’s how 
we learn from your experience to keep improving. Push the Upload button on the monitor’s
tab.

#### WP-CLI command line operation

This plugin supports [WP-CLI](https://wp-cli.org/). When your tables are large this
is the best way to add the high-performance keys: it doesn’t time out.

Give the command `wp help index-mysql` for details. A few examples:

 * `wp index-mysql status` shows the current status of high-performance keys.
 * `wp index-mysql enable --all` adds the high-performance keys to all tables that
   don’t have them.
 * `wp index-mysql enable wp_postmeta` adds the high-performance keys to the postmeta
   table.
 * `wp index-mysql disable --all` removes the high-performance keys from all tables
   that have them, restoring WordPress’s default keys.
 * `wp index-mysql enable --all --dryrun` writes out the SQL statements necessary
   to add the high-performance keys to all tables, but does not run them.
 * `wp index-mysql enable --all --dryrun | wp db query` writes out the SQL statements
   and pipes them to wp db to run them.

Note: avoid saving the –dryrun output statements to run later. The plugin generates
them to match the current state of your tables.

#### Why use this plugin?

Three reasons (maybe four):

 1. to save carbon footprint.
 2. to save carbon footprint.
 3. to save carbon footprint.
 4. to save people time.

Seriously, the microwatt hours of electricity saved by faster web site technologies
add up fast, especially at WordPress’s global scale.

#### How can I learn more about making my WordPress site more efficient?

We offer several plugins to help with your site’s database efficiency. You can [read about them here](https://www.plumislandmedia.net/wordpress/performance/optimizing-wordpress-database-servers/).

#### Credits

 * Michael Uno for Admin Page Framework.
 * Marco Cesarato for LiteSQLParser.
 * Allan Jardine for Datatables.net.
 * Leho Kraav and Sebastian Sommer for suggesting the WooCommerce tables.
 * Japreet Sethi for advice, and for testing on his large installation.
 * Rick James for everything.
 * Jetbrains for their IDE tools, especially PhpStorm. It’s hard to imagine trying
   to navigate an epic code base without their tools.

## 屏幕截图

 * [[
 * Use Tools > Index MySQL to view the Dashboard panel.
 * [[
 * Choose tables and add High-Performance Keys.
 * [[
 * Start Monitoring Database Operations, and see saved monitors.
 * [[
 * View a saved monitor to see slow database queries.
 * [[
 * About the plugin.
 * [[
 * Use WP CLI to run the plugin’s operations.

## 安装

You may install this plugin by visiting Plugins > Add New on your site’s Dashboard,
then searching for _Index WP MySQL For Speed_ and following the usual installation
workflow.

When you activate it, it will copy [a php source file](https://www.plumislandmedia.net/reference/filtering-database-changes-during-wordpress-updates/)
into the [must-use plugins directory](https://wordpress.org/support/article/must-use-plugins/),`
wp-content/mu-plugins`. Some sites’ configurations prevent the web server from writing
files into that directory. In that case the plugin will still work correctly. But,
after WordPress core version upgrades you may have to revisit the Tools > Index 
MySQL page and correct the keying on some tables. Why? The mu-plugin prevents core
version updates from trying to change keys.

#### Composer

If you configure your WordPress installation using composer, you may install this
plugin into your WordPress top level configuration with the command

    ```
    composer require "wpackagist-plugin/index-wp-mysql-for-speed":"^>=1.5.6"
    ```

During composer installation the plugin can automatically copy the necessary source
file (see the previous section) into the must-use plugins directory. If you want
that to happen, you should include these scripts in your top-level `composer.json`
file.

    ```
     "scripts": {
             "install-wp-mysql-mu-module": [
                     "@composer --working-dir=wordpress/wp-content/plugins/index-wp-mysql-for-speed install-mu-module"
             ],
             "post-install-cmd": [
                     "@install-wp-mysql-mu-module"
             ],
             "post-update-cmd": [
                     "@install-wp-mysql-mu-module"
             ]
         },
    ```

## 常见问题

### Should I back up my site before using this?

**Yes.** You already knew that.

### I don’t see any changes to my database speed. Why not?

 * Just installing and activating the plugin is **not enough to make it work**. 
   Don’t forget to visit the Index MySQL Tool under the Tools menu. From there you
   can press the **Add Keys Now** button.
 * On a modestly sized site (with a few users and a few hundred posts) your database
   may be fast enough without these keys. The speed improvements are most noticeable
   on larger sites with many posts and products.

### I use a nonstandard database table prefix. Will this work ?

**Yes.** Some WordPress databases have [nonstandard prefixes](https://codex.wordpress.org/Creating_Tables_with_Plugins#Database_Table_Prefix).
That is, their tables are named _something\_posts_, _something\_postmeta_, and so
forth instead of _wp\_posts_ and _wp\_postmeta_. This works with those databases.

### My WordPress host offers MariaDB, not MySQL. Can I use this plugin?

**Yes.**

### Which versions of MySQL and MariaDB does this support?

MySQL versions 5.5.62 and above, 5.6.4 and above, 8 and above. MariaDB versions 
5.5.62 and above.

### What database Storage Engine does this support?

**InnoDB only.** If your tables use MyISAM (the older storage engine) or the older
COMPACT row format, this plugin offers to upgrade them for you.

### What tables and keys does the plugin change?

[Please read this](https://www.plumislandmedia.net/index-wp-mysql-for-speed/tables_and_keys/).

### Is this safe? Can I add high-performance keys and revert back to WordPress standard keys safely?

Yes. it is safe to add keys and revert them. Changing keys is a routine database-
maintenance operation.

As you know you should still keep backups of your site: other things can cause data
loss.

### My site uses WooCommerce HPOS (High Performance Order Storage). Is this plugin still helpful?

**Yes.** WooCommerce still uses core WordPress tables for your shop’s products, 
posts, pages, and users. This plugin adds high-performance keys to those tables.

High Performance Order Storage, true to its name, stores your shop’s orders in a
more efficient way. Formerly orders were stored in those same core WordPress tables.

### Is this plugin compatible with some other specific plugin?

This plugin only changes database indexes. If the other plugin does not change database
indexes, it is very likely compatible with this one.

Of course, if you find an incompatibility please open a support topic.

### I got a fatal error trying to add keys. How can I fix that?

Sometimes the Index WP MySQL For Speed plugin for WordPress generates errors when
you use it to add keys. These can look like this or similar:

    ```
    Fatal error: Uncaught ImfsException: [0]: Index for table 'wp_postmeta' is corrupt; try to repair it
    ```

First, don’t panic. This (usually) does not mean your site has been corrupted. It
simply means your MariaDB or MySQL server was not able to add the keys to that particular
table. Your site will still function, but you won’t get the benefit of high-performance
keys on the particular table. Very large tables are usually the ones causing this
kind of error. Very likely you ran out of temporary disk space on your MariaDB or
MySQL database server machine. The database server makes a temporary copy of a table
when you add keys to it; that allows it to add the keys without blocking your users.

It’s possible to correct this problem by changing your MariaDB or MySQL configuration.
[Instructions are here](https://wordpress.org/support/topic/fatal-error-uncaught-exception-29/).

### What happens to my tables and keys during a WordPress version update?

If the plugin is activated during a WordPress version update, it prevents the update
workflow from removing your high-performance keys (Version 1.4.7).

### Does this work on my multisite (network) WordPress instance?

**Yes**. On multisite instances, you must activate the plugin from the Network Admin
dashboard. After network activation, the Index MySQL tool is available for use by
the administrator on each site.

If you have many subsites, you may prefer to use WP-CLI to add the high-performance
keys to each site in turn. Commands like these will work, if you mention each `blogid`
in turn.:

    ```
    wp index-mysql enable --all --blogid=1
     wp index-mysql enable --all --blogid=2
     wp index-mysql enable --all --blogid=3
    ```

### My site has thousands of registered users. My Users, Posts, and Pages panels in my dashboard are still load slowly even with this plugin.

We have another plugin to handle lots of users, [Index WP Users For Speed](https://wordpress.org/plugins/index-wp-users-for-speed/).
Due to the way WordPress handles users, just changing database keys is not enough
to solve those performance problems.

### How can I enable persistent object caching on my site?

Persistent object caching can help your site’s database performance by reducing 
its workload. You can read about it [here](https://developer.wordpress.org/reference/classes/wp_object_cache/#persistent-cache-plugins).
If your hosting provider doesn’t offer redis or memcached cache-server technology
you can try using our [SQLite Object Cache](https://wordpress.org/plugins/sqlite-object-cache/)
plugin for the purpose.

### Why did the size of my tables grow when I added high-performance keys?

Database keying works by making copies of your table’s data organized in ways that
are easy to randomly access. Your MariaDB or MySQL server automatically maintains
the copies of your data as you insert or update rows to each table. And, the keying
task adjusts the amount of free space in each block of your table’s data in preparation
for the insertion of new rows. When free space is available, inserting new rows 
doesn’t require relatively slow block splits. Tables that have been in use for a
long time often need new free space in many blocks. When adding keys, it is normal
for table sizes to increase. It’s the oldest tradeoff in computer science: time 
vs. space.

### Will the new keys be valid for new data in the tables?

**Yes**. Once the high-performance keys are in place MariaDB and MySQL automatically
maintain them as you update, delete, or insert rows of data to your tables. There
is no need to do anything to apply the keys to new data: the DBMS software does 
that for you.

### How do I revert to WordPress’s standard keys, undoing the action of this plugin?

You can revert the keys from the Index MySQL Tool under the Tools menu, or use the
wp-cli command `wp index-mysql disable --all`. _Notice_ that if you deactivate or
delete the plugin without doing this, the high-performance keys _remain_.

### One of my tables already has a nonstandard key in it. How do I make this plugin leave it there?

If you start the name of the index with the characters `index_wp_mysql_protect_`
this plugin ignores it and leaves it in place. For example if yoo want an index 
on `wp_posts.guid` you can create it like this:

    ```
    ALTER TABLE wp_posts ADD KEY index_wp_mysql_protect_guid ON wp_posts(guid);`
    ```

Notice how `index_wp_mysql_protect_guid`, the name of the key, starts with those
characters.

### How do I get an answer to another question?

Please see more questions and answers [here](https://plumislandmedia.net/index-wp-mysql-for-speed/faq/).

## 评价

![](https://secure.gravatar.com/avatar/e847fde76a9ea0c6b467e9abe8828cfe80004aa6d6ff99de422652b30599e4f0?
s=60&d=retro&r=g)

### 󠀁[A must-have for large WordPress sites](https://wordpress.org/support/topic/a-must-have-for-large-wordpress-sites/)󠁿

 [Philipp](https://profiles.wordpress.org/devph1l/) 2026 年 1 月 17 日

I never had any problems with this plugin, it works like a charm and can improve
performance drastically!

![](https://secure.gravatar.com/avatar/92d9541e1a98bc6e4abd2df92689a3726d2938def37f3df88ffb1d76f6829c59?
s=60&d=retro&r=g)

### 󠀁[Awesome](https://wordpress.org/support/topic/awesome-10605/)󠁿

 [Bike Gremlin](https://profiles.wordpress.org/bikegremlin/) 2025 年 12 月 10 日
1 回复

Thank you very much for the time and effort put into making and maintaining this
plugin. One of the best – never had any problems with it for years now.

![](https://secure.gravatar.com/avatar/c5a5c374a7b759036099a4c19dd1d336f6cf0c87af13d932f1d2b7b1c09edb30?
s=60&d=retro&r=g)

### 󠀁[Essential plugin](https://wordpress.org/support/topic/essential-plugin-258/)󠁿

 [momo-fr](https://profiles.wordpress.org/momo-fr/) 2025 年 12 月 5 日

An essential plugin for shared hosting or high-traffic websites. Significantly accelerated
execution speed.

![](https://secure.gravatar.com/avatar/0a2f450287ee2b85d18bc809898a26f506370516d452e311a5f3e96705281612?
s=60&d=retro&r=g)

### 󠀁[A must-have for large websites](https://wordpress.org/support/topic/a-must-have-for-large-websites/)󠁿

 [Eroan Boyer](https://profiles.wordpress.org/eroan/) 2025 年 11 月 12 日

I’ve been using it on several WooCommerce websites, it helped a lot improving performance.
The debug tab is a gold mine to understand mysql configuration issues.

![](https://secure.gravatar.com/avatar/6de3c00ba400ec107d67405217f708692bb7e9ccf8bfba18b509d7bda207513f?
s=60&d=retro&r=g)

### 󠀁[Document request latency](https://wordpress.org/support/topic/document-request-latency/)󠁿

 [omid](https://profiles.wordpress.org/ccoder/) 2025 年 9 月 24 日 1 回复

It’s a good plugin, but it interferes with the Woodmart template and gives a Server
respond slow error (observed 1353 milliseconds) in the document request latency 
section of the pagespeed website.

![](https://secure.gravatar.com/avatar/ec5ef9467f42c392a0279efb0a0c6ef82ba7ef1efc4188f53a371c70aa51200c?
s=60&d=retro&r=g)

### 󠀁[An essential plugin for every WordPress site](https://wordpress.org/support/topic/an-essential-plugin-for-every-wordpress-site/)󠁿

 [supton](https://profiles.wordpress.org/supton/) 2025 年 8 月 6 日

Fantastic performance improvements on every site I have used this on so far. I consider
this one of my must use plugins for each build now.

 [ 阅读所有96条评价 ](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/)

## 贡献者及开发者

「Index WP MySQL For Speed」是开源软件。 以下人员对此插件做出了贡献。

贡献者

 *   [ OllieJones ](https://profiles.wordpress.org/olliejones/)
 *   [ rjasdfiii ](https://profiles.wordpress.org/rjasdfiii/)

「Index WP MySQL For Speed」插件已被翻译至 5 种本地化语言。 感谢[所有译者](https://translate.wordpress.org/projects/wp-plugins/index-wp-mysql-for-speed/contributors)
为本插件所做的贡献。

[帮助将「Index WP MySQL For Speed」翻译成简体中文。](https://translate.wordpress.org/projects/wp-plugins/index-wp-mysql-for-speed)

### 对开发感兴趣吗?

您可以[浏览代码](https://plugins.trac.wordpress.org/browser/index-wp-mysql-for-speed/)，
查看[SVN仓库](https://plugins.svn.wordpress.org/index-wp-mysql-for-speed/)，或通过
[RSS](https://plugins.trac.wordpress.org/log/index-wp-mysql-for-speed/?limit=100&mode=stop_on_copy&format=rss)
订阅[开发日志](https://plugins.trac.wordpress.org/log/index-wp-mysql-for-speed/)。

## 更新日志

#### 1.5.6

 * (No changes to keys).
 * Correct composer compatibility issue.
 * Upgrade to the latest Datatables.net code.
 * Suppress reversions to keys when the WooCommerce installer runs.

#### 1.5.4

Correct php 5.6 compatibility issue.

#### 1.5.3

Correct language deprecations, test on IIS.

#### 1.5.2

Correct release error.

#### 1.5.1

Add support for the WooCommerce tables wp_automatewoo_log_meta, wp_wc_orders_meta,
and wp_woocommerce_order_itemmeta.

#### 1.4.19

Report information about host machine using meminfo and procinfo if those files 
are available.

#### 1.4.18

Security update.

#### 1.4.17

Back out a miscellaneous bug fix from the previous version. It was an attempt to
avoid a warning from Query Monitor’s hooks display.
 Upload the full MariaDB / MySQL
version information with monitors as well as metadata.

#### 1.4.16

(no changes to keys)
 WordPress 6.5 compatibility. Support WordPress versions back
to 4.2 (At MDDHosting’s request). Avoid attempting to upgrade from storage engines
except MyISAM and Aria. WP-CLI upgrade, enable, and disable commands are idempotent
now. They don’t generate errors when they find no tables to process. Miscellaneous
bug fixes

## 社区插件

该插件由社区开发和支持。 [为该插件贡献](https://github.com/OllieJones/index-wp-mysql-for-speed/)

## 额外信息

 *  版本 **1.5.6**
 *  最后更新：**3 月前**
 *  活跃安装数量 **50,000+**
 *  WordPress 版本 ** 4.2 或更高版本 **
 *  已测试的最高版本为 **6.9.4**
 *  PHP 版本 ** 5.6 或更高版本 **
 *  语言
 * [English (US)](https://wordpress.org/plugins/index-wp-mysql-for-speed/) 、 [French (France)](https://fr.wordpress.org/plugins/index-wp-mysql-for-speed/)、
   [Korean](https://ko.wordpress.org/plugins/index-wp-mysql-for-speed/) 、 [Spanish (Chile)](https://cl.wordpress.org/plugins/index-wp-mysql-for-speed/)、
   [Spanish (Spain)](https://es.wordpress.org/plugins/index-wp-mysql-for-speed/)
   和 [Swedish](https://sv.wordpress.org/plugins/index-wp-mysql-for-speed/).
 *  [翻译成简体中文](https://translate.wordpress.org/projects/wp-plugins/index-wp-mysql-for-speed)
 * 标签
 * [index](https://cn.wordpress.org/plugins/tags/index/)[key](https://cn.wordpress.org/plugins/tags/key/)
   [mysql](https://cn.wordpress.org/plugins/tags/mysql/)[performance](https://cn.wordpress.org/plugins/tags/performance/)
   [wp-cli](https://cn.wordpress.org/plugins/tags/wp-cli/)
 *  [高级视图](https://cn.wordpress.org/plugins/index-wp-mysql-for-speed/advanced/)

## 评级

 4.8 星（最高 5 星）。

 *  [  92 条 5 星评价     ](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/?filter=5)
 *  [  0 条 4 星评价     ](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/?filter=4)
 *  [  0 条 3 星评价     ](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/?filter=3)
 *  [  1 条 2 星评价     ](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/?filter=2)
 *  [  3 条 1 星评价     ](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/#new-post)

[查看全部评论](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/reviews/)

## 贡献者

 *   [ OllieJones ](https://profiles.wordpress.org/olliejones/)
 *   [ rjasdfiii ](https://profiles.wordpress.org/rjasdfiii/)

## 支持

最近两个月解决的问题：

     总计 2，已解决 0

 [查看支持论坛](https://wordpress.org/support/plugin/index-wp-mysql-for-speed/)

## 捐助

您愿意支持这个插件的发展吗?

 [ 捐助此插件 ](https://github.com/sponsors/OllieJones)