Tengo una tabla de tamaño modesto, 277k registros en este momento, en los que estoy tratando de hacer una búsqueda FULLTEXT
. La búsqueda parece ser muy rápida hasta que llega a la fase de envío de datos.MySQL "Enviando datos" terriblemente lento
La Tabla:
CREATE TABLE `sqinquiries_inquiry` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ts` datetime NOT NULL,
`names` longtext NOT NULL,
`emails` longtext NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `sqinquiries_inquiry_search` (`names`,`emails`)
) ENGINE=MyISAM AUTO_INCREMENT=305560 DEFAULT CHARSET=latin1
la consulta:
SELECT * FROM `sqinquiries_inquiry` WHERE (
MATCH (`sqinquiries_inquiry`.`names`) AGAINST ('smith' IN BOOLEAN MODE) OR
MATCH (`sqinquiries_inquiry`.`emails`) AGAINST ('smith' IN BOOLEAN MODE)
) ORDER BY `sqinquiries_inquiry`.`id` DESC LIMIT 100
El Perfil: (I cortó a cabo información aparentemente inútil)
+-------------------------+----------+
| Status | Duration |
+-------------------------+----------+
| preparing | 0.000014 |
| FULLTEXT initialization | 0.000015 |
| executing | 0.000004 |
| Sorting result | 0.000008 |
| Sending data | 2.247934 |
| end | 0.000011 |
| query end | 0.000003 |
+-------------------------+----------+
La DESCRIBE
se ve muy bien, un simple chiste: la descripción:
id: 1
select_type: SIMPLE
table: sqinquiries_inquiry
type: index
possible_keys: NULL
key: PRIMARY
key_len: 4
ref: NULL
rows: 100
Extra: Using where
Así que lo que no entiendo es donde el 2,25 segundos de envío de datos está viniendo? Veo un rendimiento similar en Python y en la consola mysql
, ambos conectando a localhost
.
actualizaciones:
- Per comentario solicitando el tamaño medio de la fila, que es: 53.8485
- por comentario, aquí es el
DESCRIBE
anteriormente.
¿Cuán grande es la cantidad de datos que está recuperando? si no sabe, mire las estadísticas de la tabla y díganos el tamaño promedio de la fila. – longneck
No estaba seguro de cómo averiguar el tamaño promedio de la fila, así que arrojé el resultado de esto hasta arriba: 'SELECCIONAR AVG (LONGITUD (nombres) + LONGITUD (correos electrónicos) + LONGITUD (id) + LONGITUD (ts)) como promedio_vg de sqinquiries_inquiry'. Si hay una mejor manera, por favor avíseme. –
El problema es que su 'FULLTEXT KEY' no se usa. ¿Podría publicar el 'DESCRIBE'? – Quassnoi