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.
El foco principal: La tabla wp_postmeta
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;
驴Cu谩l es el problema?
- AUTO_INCREMENT ralentiza la mayor铆a de las consultas debido a que tiene que buscar en el 铆ndice secundario para encontrar el ID auto_incrementado, y luego buscar en los datos el ID real necesario.
- BIGINT y AUTO_INCREMENT son excesivos.
- meta_key o meta_value nunca ser谩n NULL.
Soluci贸n propuesta:
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;
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:
wp_posts
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 |
wp_options
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 |
wp_usermeta
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 |
wp_termmeta
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!