首页 > 解决方案 > MYSQL 服务器在 100 万条记录上运行查询非常慢

问题描述

我正在使用 MYSQL 来管理图书库数据,这是我的主表

CREATE TABLE `book` (
`id` int(11) NOT NULL,
`bookId` int(11) DEFAULT NULL,
`pageNum` smallint(6) DEFAULT NULL,
`pageData` longtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

现在当我运行这个查询

SELECT c.id, c.bookId,c.pageNum, c.pageData, o.BookName FROM book c  left 
join kotarbooks o on c.bookId=o.BookId WHERE pageData like '%[Search Word]%'"

大约需要3分钟

当我运行查询时

SELECT * FROM book WHERE bookid=[bookid] AND pageNum=[pageNumber]

大约需要 2 分钟 有什么办法可以加快这些查询的速度吗?非常感谢

标签: mysql

解决方案


我运行查询SELECT * FROM book WHERE bookid=[bookid] AND pageNum=[pageNumber] 大约需要 2 分钟

您可以创建索引来加速过滤:

CREATE INDEX idx ON book(bookid, pageNum);

至于 forWHERE pageData like '%[Search Word]%'并不是那么微不足道,因为您'%'在开始时使用 using 进行搜索,并且查询不是SARGable


推荐阅读