1

私はmysqlにテーブルを持っています:

CREATE TABLE `pdd_data` (
    `pdd_id` INT(16) NOT NULL primary key auto_increment,
    `vin` varchar(32) NOT NULL,
    `time` TIMESTAMP NOT NULL,
    `cmd` varchar(16) NOT NULL,
    `data` varchar(128) NOT NULL
 )ENGINE=InnoDB DEFAULT CHARSET=utf8;

に 1,000,000 レコードを挿入pdd_dataします。次のように、今後頻繁にクエリを使用します。

select * from pdd_data where cmd = 4599;
select * from pdd_data where vin = 400;
select * from pdd_data where vin = 400 and cmd = 4599;

現在、クエリ時間は約 1.20 秒 ~ 1.90 秒です。このクエリを高速化する方法について誰か提案してもらえますか?

psインデックスを使用してテーブルを作成します。

CREATE TABLE `pdd_data1` (
    `pdd_id` INT(16) NOT NULL primary key auto_increment,
    `vin` varchar(32) NOT NULL,
    `time` TIMESTAMP NOT NULL,
    `cmd` varchar(16) NOT NULL,
    `data` varchar(128) NOT NULL,
    index idx_vin_cmd (vin(32), cmd(16))
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

selectしかし、クエリの改善はありません。

4

1 に答える 1

0

私の提案は使用しないことselect *です。select *useを使用する代わりにselect pdd_id, vin,time, cmd, data. これにより、実行時間が確実に短縮されます。

于 2015-03-19T09:37:35.733 に答える