私は現時点では控えめなサイズのテーブル277kレコードを持っています。これはFULLTEXT
の検索を実行しようとしています。検索は送信データフェーズに達するまでは非常に高速です。MySQL「データを送信中」がひどく遅い
表:
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
問合せ:
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
プロフィール:(私は一見役に立たない情報を切り取ら)
+-------------------------+----------+
| 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
は偉大に見える、シンプルな1つのライナー: は説明:
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
データを送信するの2.25秒はどこから来ているので、私は理解していないことはありますか?私はPythonとコンソールmysql
アプリで同様のパフォーマンスを見ています。どちらもlocalhost
に接続しています。
アップデート:コメントパー
- 平均行サイズを要求し、それは次のとおりです。コメントパー53.8485
- 、ここでは上記
DESCRIBE
です。
取得するデータの量はどれくらいですか?あなたがわからない場合は、テーブルの統計を見て、私たちに平均行サイズを教えてください。 – longneck
平均行サイズを調べる方法がわからなかったので、これを上に出力しました: 'AVG(LENGTH(LENGTH(LENGTH)+ LENGTH(Eメール)+ LENGTH(LENGTH)+ LENGTH 〜からsqinquiries_inquiry'。より良い方法があれば教えてください。 –
問題は、あなたの 'FULLTEXT KEY'が使用されていないことです。 'DESCRIBE'を投稿してください。 – Quassnoi