Uno de los principales retos que enfrentan los desarrolladores y administradores de sitios WordPress es la eficiencia y rapidez en la gestión de datos. Hoy, te presentamos una serie de optimizaciones en las tablas MySQL que prometen mejorar significativamente la velocidad de tu sitio web en WordPress.
La tabla wp_postmeta suele ser la más grande de tu base de datos en WordPress. Si no lo es, podrías estar frente a un problema. Es importante también revisar las tablas wp_actionscheduler_actions y wp_actionscheduler_logs.
Cuando instalas WordPress por primera vez, se crean tablas en la base de datos. Tomando como ejemplo la tabla wp_postmeta, su estructura inicial es:
CREATE TABLE wp_postmeta (
meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
post_id bigint(20) unsigned NOT NULL DEFAULT '0',
meta_key varchar(255) DEFAULT NULL,
meta_value longtext,
PRIMARY KEY (meta_id),
KEY post_id (post_id),
KEY meta_key (meta_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;Lenguaje del código: PHP (php)
CREATE TABLE wp_postmeta (
post_id BIGINT UNSIGNED NOT NULL,
meta_key VARCHAR(255) NOT NULL,
meta_value LONGTEXT NOT NULL,
PRIMARY KEY(post_id, meta_key),
INDEX(meta_key)
) ENGINE=InnoDB;Lenguaje del código: PHP (php)
En tablas existentes, podemos añadir claves de alto rendimiento que coincidan con las consultas más comunes de WordPress. Por ejemplo, para wp_postmeta:
ALTER TABLE wp_postmeta ADD UNIQUE KEY meta_id (meta_id);
ALTER TABLE wp_postmeta DROP PRIMARY KEY;
ALTER TABLE wp_postmeta ADD PRIMARY KEY (post_id, meta_key, meta_id);
ALTER TABLE wp_postmeta DROP KEY post_id;
ALTER TABLE wp_postmeta DROP KEY meta_key;
ALTER TABLE wp_postmeta ADD KEY meta_key (meta_key, post_id);
Esto generará nuevas claves de alto rendimiento. La comparativa quedaría:
| Tabla | Claves estándar de WP | Nuevas claves |
|---|---|---|
| wp_postmeta | meta_id: primary key post_id meta_key | post_id, meta_key, meta_id: primary key meta_id: unique key meta_key, post_id |
Se puede hacer lo mismo para otras tablas principales:
ALTER TABLE wp_posts DROP KEY type_status_date;
ALTER TABLE wp_posts ADD KEY type_status_date (post_type, post_status, post_date, post_author, ID);
ALTER TABLE wp_posts DROP KEY post_author;
ALTER TABLE wp_posts ADD KEY post_author (post_author, post_type, post_status, post_date, ID);
| Tabla | Claves estándar de WP | Nuevas claves |
|---|---|---|
| wp_posts | post_type, post_status, post_date,ID post_author | post_type,post_status,post_date,post_author,ID post_author,post_type,post_status,post_date,ID |
ALTER TABLE wp_options ADD UNIQUE KEY option_id (option_id);
ALTER TABLE wp_options DROP PRIMARY KEY;
ALTER TABLE wp_options ADD PRIMARY KEY (autoload, option_id);
ALTER TABLE wp_options DROP KEY autoload;
| Tabla | Claves estándar de WP | Nuevas claves |
|---|---|---|
| wp_options | option_id: primary key option_name: unique key autoload | autoload, option_id: primary key option_name: unique_key option_id: unique key |
ALTER TABLE wp_usermeta ADD UNIQUE KEY umeta_id (umeta_id);
ALTER TABLE wp_usermeta DROP PRIMARY KEY;
ALTER TABLE wp_usermeta ADD PRIMARY KEY (user_id, meta_key, umeta_id);
ALTER TABLE wp_usermeta DROP KEY user_id;
ALTER TABLE wp_usermeta DROP KEY meta_key;
ALTER TABLE wp_usermeta ADD KEY meta_key (meta_key, user_id);
| Tabla | Claves estándar de WP | Nuevas claves |
|---|---|---|
| wp_usermeta | umeta_id: primary key user_id meta_key | user_id, meta_key, umeta_id: primary key umeta_id: unique key meta_key, user_id |
ALTER TABLE wp_termmeta ADD UNIQUE KEY meta_id (meta_id);
ALTER TABLE wp_termmeta DROP PRIMARY KEY;
ALTER TABLE wp_termmeta ADD PRIMARY KEY (term_id, meta_key, meta_id);
ALTER TABLE wp_termmeta DROP KEY term_id;
ALTER TABLE wp_termmeta DROP KEY meta_key;
ALTER TABLE wp_termmeta ADD KEY meta_key (meta_key, term_id);
| Tabla | Claves estándar de WP | Nuevas claves |
|---|---|---|
| wp_termmeta | meta_id: primary key term_id meta_key | term_id, meta_key, meta_id: primary key meta_id: unique key meta_key, term_id |
Para aquellos interesados en realizar estos cambios de manera automática, existen plugins como «Index WP MySQL For Speed» que simplifican este proceso. Es fundamental que, antes de realizar cualquier cambio, se haga un respaldo de la base de datos para evitar problemas imprevistos.
Con estas optimizaciones, los sitios WordPress no solo serán más rápidos, sino también más eficientes en su gestión de datos. ¡Una revolución en rendimiento a la vista!
