我有 mysql 版本 8.0.x+ 我的数据库服务器 RAM 和 CPU:
我尝试运行这样的选择查询:
从 db.table1 中选择 * 其中 ID = 79998,年份 = 2009;
我花了大约30秒,db.table1包含大约50m条记录。
如何加速mysql数据库?
我的创建表:
CREATE TABLE `table1` (
`ID` bigint PRIMARY KEY auto_increment,
`Company_ID` bigint DEFAULT NULL,
`year` bigint DEFAULT NULL,
`Fiscal_period_ID` bigint DEFAULT NULL,
`Filing_status_ID` double DEFAULT NULL,
`Accounting_standard_ID` double DEFAULT NULL,
`Fundamentals_type_ID` bigint DEFAULT NULL,
`Is_consolidated` double DEFAULT NULL,
`Latest_period_end` text,
`Entry_date` text,
`Update_date` text,
`Announcement_date` text,
`Available_date` text,
`Revision` bigint DEFAULT NULL,
`Flag` bigint DEFAULT NULL,
`Update_lock` bigint DEFAULT NULL,
`U3_ID_FS` double DEFAULT NULL,
`EQY_FUND_CRNCY` int DEFAULT NULL,
`ID_BB_COMPANY` bigint DEFAULT NULL,
`CLEANUP_FLAG` double DEFAULT NULL,
`ID_BB_UNIQUE` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
(部分答案)
主要问题是查询没有使用任何索引。
在表中添加以下索引
alter table table1
add index id_year(ID,Year) ,
add idex year_id(Year,ID);
运行解释计划
explain SELECT * FROM db.table1 where ID = 79998 and year = 2009;
并查看上面的索引使用了哪个索引,并删除多余的索引。