1
私は7500万を超えるレジスタを持つテーブルを持っています。私は、このレジストリを要約するためにグループを運営したいと思っています。大きなテーブルのMySQL GROUP BY
テーブルの構造は次のとおりです。
CREATE TABLE `output_medicos_full` (
`name` varchar(100) NOT NULL DEFAULT '',
`term` varchar(50) NOT NULL DEFAULT '',
`hash` varchar(40) NOT NULL DEFAULT '',
`url` varchar(2000) DEFAULT NULL,
PRIMARY KEY (`name`,`term`,`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
私は、クエリ怒鳴るを実行したいのですが、4GBのRAMをささげるのMySQLサーバ5.5を使用している限り取っている:
INSERT INTO TABLE report
SELECT
`hash`
,CASE UPPER(SUBSTRING_INDEX(url, ':', 1))
WHEN 'HTTP' THEN 1
WHEN 'HTTPS' THEN 2
WHEN 'FTP' THEN 3
WHEN 'FTPS' THEN 4
ELSE 0 end
,url
FROM output_medicos_full
GROUP BY `hash`;
テーブルレポートにありハッシュカラムのユニークなインデックス
スピードアップに役立つのは何ですか?
ありがとうございました
もちろんです。すべてのレコードで関数を使用しています。インデックスでさえそれをより速くするでしょう。他のDBエンジンでは、クエリは失敗します。なぜあなたはURL列を集計していないのでしょうか? –
@juergend MySQLにはこれがないかもしれませんが、いくつかのRDBMS(例えば、Oracle)_do_には機能インデックスがあります。 –
@あなたのハッシュ値はvarchar(40)なので、相当な長さになります。インデックスにはなりますが、パフォーマンスに影響を与える可能性があります。 –