Ich habe eine bescheidene Tabelle, 277k Datensätze im Moment, die ich versuche, eine FULLTEXT
Suche zu machen. Die Suche scheint sehr schnell zu sein, bis es in die Daten senden Phase kommt.MySQL "Daten senden" schrecklich langsam
Die Tabelle:
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
Die Abfrage:
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
Das Profil: (I scheinbar nutzlose Informationen snipped out)
+-------------------------+----------+
| 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 |
+-------------------------+----------+
Die DESCRIBE
sieht gut aus, ein einfaches Motto: der Beschreibung:
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
Also, was ich nicht verstehe, ist, wo die 2,25 Sekunden von Daten gesendet herkommt? Ich sehe ähnliche Leistung in Python und in der Konsole mysql
App, beide verbinden zu localhost
.
Updates:
- pro Kommentar die durchschnittliche Zeilengröße anfordert, ist es: 53,8485
- Per Kommentar, hier ist die
DESCRIBE
oben.
Wie groß ist die Datenmenge, die Sie abrufen? Wenn Sie das nicht wissen, sehen Sie sich die Tabellenstatistik an und teilen Sie uns die durchschnittliche Zeilengröße mit. – longneck
Ich war mir nicht sicher, wie ich die durchschnittliche Zeilengröße herausfinden sollte, also warf ich die Ausgabe auf: AVG (LÄNGE (Namen) + Länge (E-Mails) + Länge (ID) + Länge (ts)) als avg_length auswählen von sqinquiries_inquiry'. Wenn es einen besseren Weg gibt, lass es mich wissen. –
Das Problem ist, dass Ihre 'FULLTEXT KEY' nicht verwendet wird. Könnten Sie bitte die 'DESCRIBE' veröffentlichen? – Quassnoi