Điều kiện
DDL:
-- auto-generated definition
create table Webland
(
Id int auto_increment comment 'ID'
primary key,
SyubetuCd char(2) not null comment '種類',
Chiiki varchar(64) null comment '地域',
AreaCd char(5) null comment 'エリアコード',
TodohukenCd char(2) null comment '都道府県コード',
SikucyosonCd char(3) null comment '市区町村名',
CyoCd char(3) null comment '地区名',
MoyoriekiNm varchar(64) null comment '最寄駅:名称',
MoyoriekiMin decimal(3) null comment '最寄駅:距離(分)',
TorihikiKin decimal(13) null comment '取引価格(総額)',
TsuboKin decimal(9) null comment '坪単価',
Madori varchar(64) null comment '間取り',
Menseki decimal(8, 2) null comment '面積(㎡)',
TorihikiTan varchar(64) null comment '取引価格(㎡単価)',
TochiKeijyo varchar(64) null comment '土地の形状',
Maguchi decimal(3, 1) null comment '間口',
NobeyukaMenseki decimal(8, 2) null comment '延床面積(㎡)',
ChikuY int null comment '建築年',
KouzouNm varchar(64) null comment '建物の構造',
Youto varchar(64) null comment '用途',
Riyomokuteki varchar(64) null comment '今後の利用目的',
ZenmenHoui varchar(64) null comment '前面道路:方位',
ZenmenSyurui varchar(64) null comment '前面道路:種類',
ZenmenHaba decimal(3, 1) null comment '前面道路:幅員(m)',
ToshiKeikaku varchar(64) null comment '都市計画',
Kenpei decimal(3) null comment '建ぺい率(%)',
Youseki decimal(4) null comment '容積率(%)',
TorihikiJiten varchar(64) null comment '取引時点',
Kaisou varchar(64) null comment '改装',
TorihikiJijyou varchar(64) null comment '取引の事情等',
DelFlg char default '0' null comment '削除フラグ',
InputDate datetime null comment '登録日',
InputName varchar(30) null comment '登録者',
EditDate datetime null comment '更新日',
EditName varchar(30) null comment '更新者',
DeleteDate datetime null comment '削除日',
DeleteName varchar(30) null comment '削除者'
)
auto_increment = 304140;
-
Câu truy vấn cần tăng tốc
-
Lấy danh sách 100 records đầu tiên
SELECT *
FROM Webland
WHERE SyubetuCd = '01'
AND DelFlg = 0
AND DeleteDate IS NULL
AND TodohukenCd = '01'
AND SikucyosonCd = '101'
LIMIT 100;
- Thống kê
SELECT COUNT(*) as `count`,
SUM(CASE WHEN `TorihikiKin` IS NULL THEN 0 ELSE `TorihikiKin` END) / SUM(CASE WHEN `TorihikiKin` IS NULL THEN 0 ELSE 1 END) as `avgPrice`,
SUM(CASE WHEN `Menseki` IS NULL THEN 0 ELSE `Menseki` END) / SUM(CASE WHEN `Menseki` IS NULL THEN 0 ELSE 1 END) as `avgAcreage`,
SUM(CASE WHEN `ChiKuY` IS NULL THEN 0 ELSE `ChiKuY` END) / SUM(CASE WHEN `ChiKuY` IS NULL THEN 0 ELSE 1 END) as `avgDate`
FROM `Webland`
WHERE `SyubetuCd` = '01'
AND `DelFlg` = 0
AND `DeleteDate` IS NULL
AND `TodohukenCd` = '01'
AND `SikucyosonCd` IN ('101', '102', '103', '104', '105', '106', '107', '108', '109', '110')
LIMIT 1;
Danh sách index đang xem xét
-
- Theo thứ tự điều kiện
wherecủa câu SQL cần tăng tốc
- Theo thứ tự điều kiện
CREATE INDEX Webland_Index_2 ON `Webland` (`SyubetuCd`, `DelFlg`, `DeleteDate`, `TodohukenCd`, `SikucyosonCd`);
-
- Theo thứ tự điều kiện
wherenhưngVarchartype thì đưa ra phía trước
- Theo thứ tự điều kiện
CREATE INDEX Webland_Index_3 ON `Webland` (`SyubetuCd`, `TodohukenCd`, `SikucyosonCd`, `DelFlg`, `DeleteDate`);
-
- Theo thứ tự điều kiện
wherenhưngVarchartype thì đưa ra phía sau
- Theo thứ tự điều kiện
CREATE INDEX Webland_Index_1 ON `Webland` (`DelFlg`, `DeleteDate`, `SyubetuCd`, `TodohukenCd`, `SikucyosonCd`);
-
- Ý kiến khác
Lựa chọn
- [ ] Chỉ index 1
- [ ] Chỉ index 2
- [ ] Chỉ index 3
- [ ] index 1 và index 2
- [ ] index 2 và index 3
- [ ] index 3 và index 1
- [ ] Ý kiến khác
Giải thích
To be continued.
Tham khảo
https://dev.mysql.com/doc/refman/8.0/en/optimization.html https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain-join-types