Mam tabelę o niewielkich rozmiarach, obecnie 277k rekordów, które próbuję wykonać przy wyszukiwaniu FULLTEXT
. Wyszukiwanie wydaje się bardzo szybkie, dopóki nie przejdzie do fazy wysyłania danych.MySQL "Wysyłanie danych" strasznie powolne
Tabela:
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
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
Profile: (I wycięte z pozoru bezużyteczne informacje)
+-------------------------+----------+
| 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 |
+-------------------------+----------+
DESCRIBE
wygląda świetnie, prosta wykładziny: The opisać:
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
Więc co ja nie rozumiem, gdzie jest 2,25 sekundy Wysyłanie danych pochodzących z? Widzę podobną wydajność w Pythonie i aplikacji konsoli mysql
, obie łączą się z localhost
.
Aktualizacje:
- Per komentarzu wnioskiem o średniej wielkości rzędu, to jest: 53,8485
- na komentarz, tutaj jest powyżej
DESCRIBE
.
Jak duża jest ilość pobieranych danych? jeśli nie wiesz, spójrz na statystyki tabeli i powiedz nam średni rozmiar wiersza. – longneck
Nie byłem pewien, jak obliczyć średni rozmiar wiersza, więc wyrzuciłem tam jego wynik: SELECT AVG (DŁUGOŚĆ (nazwy) + DŁUGOŚĆ (e-maile) + DŁUGOŚĆ (id) + DŁUGOŚĆ (ts)) jako avg_length od sqinquiries_inquiry'. Jeśli jest lepszy sposób, daj mi znać. –
Problem polega na tym, że twój klucz "FULLTEXT KEY" nie jest używany. Czy mógłbyś opublikować "DESCRIBE"? – Quassnoi