Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL服务器在一百万条记录上运行查询速度非常慢_Mysql - Fatal编程技术网

MYSQL服务器在一百万条记录上运行查询速度非常慢

MYSQL服务器在一百万条记录上运行查询速度非常慢,mysql,Mysql,我正在使用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,

我正在使用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分钟 有没有办法加快这些查询的速度? 非常感谢

我运行query
SELECT*FROM book,其中bookid=[bookid]和pageNum=[pageNumber]
大约需要2分钟

您可以创建索引以加快筛选速度:

CREATE INDEX idx ON book(bookid, pageNum);
至于
,像“%[Search Word]%”
这样的页面数据并不是那么简单,因为您在开始时使用的是
“%”
,这使得查询不那么简单

我运行query
SELECT*FROM book,其中bookid=[bookid]和pageNum=[pageNumber]
大约需要2分钟

您可以创建索引以加快筛选速度:

CREATE INDEX idx ON book(bookid, pageNum);

至于
,像“%[Search Word]%”这样的页面数据并不是那么简单,因为您在开始搜索时使用的是
“%”
,而它不会进行查询。

类似于
表达式的

WHERE book.pageData LIKE '%[Search Word]%'
是不可搜索的,因此
book
表上的任何索引都可能不会被MySQL使用。因此,我们可以在
book
表上采用全表扫描策略,并在
kotarbooks
表上建立索引:

CREATE INDEX kotaridx ON kotarabooks (BookId, BookName);

包含
BookId
列应该有助于联接,并且
BookName
包含此列,因为它显示select子句。

类似
表达式:

WHERE book.pageData LIKE '%[Search Word]%'
是不可搜索的,因此
book
表上的任何索引都可能不会被MySQL使用。因此,我们可以在
book
表上采用全表扫描策略,并在
kotarbooks
表上建立索引:

CREATE INDEX kotaridx ON kotarabooks (BookId, BookName);

包含
BookId
列应该有助于连接,并且
BookName
包含此列,因为它出现在select子句中。

查找“索引”。它会加快查找速度没有索引?没有外键?什么是
id
以及为什么需要它以及
bookId
?查找“索引”。它会加快查找速度没有索引?没有外键?什么是
id
,为什么您需要它以及
bookId