Ho una tabella di dimensioni modeste, 277k record al momento, che sto cercando di fare una ricerca su FULLTEXT
. La ricerca sembra essere molto veloce fino a quando arriva alla fase di invio dei dati.MySQL "Invio di dati" orribilmente lento
La Tavola:
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 Query:
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
Il profilo: (I stato tagliato fuori informazioni apparentemente inutile)
+-------------------------+----------+
| 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 |
+-------------------------+----------+
Il DESCRIBE
sembra grande, un semplice rivestimento: la descrizione:
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
Quindi quello che non capisco è dove i 2,25 secondi di invio dati sono provenienti da? Vedo prestazioni simili in Python e nella console mysql
, entrambe collegate a localhost
.
Aggiornamenti:
- Per commento richiede la dimensione media di fila, si tratta di: 53,8485
- Per commenti, qui è il
DESCRIBE
sopra.
Quanto è grande la quantità di dati che stai recuperando? se non lo sai, guarda le statistiche della tabella e dicci la dimensione media della riga. – longneck
Non ero sicuro di come calcolare la dimensione media della riga, quindi ho lanciato l'output di questo file: "SELEZIONA AVG (LENGTH (nomi) + LENGTH (email) + LENGTH (id) + LENGTH (ts)) come avg_length da sqinquiries_inquiry'. Se c'è un modo migliore, per favore fatemelo sapere. –
Il problema è che il tuo 'FULLTEXT KEY' non è usato. Potresti per favore postare il 'DESCRIVERE'? – Quassnoi