Mysql 查询大型表会占用大量时间

Mysql 查询大型表会占用大量时间,mysql,sql,Mysql,Sql,我有一个表ArchiveArseh,大小为15GB,带有engine innoDB的198997行记录(将来还有400G和1000000条记录) 此表包含图像(字段文档,拇指文档)。 on字段(Id)是主键,4个字段被索引。 说明 运行简单查询时,选择like SELECT * FROM archivearseh WHERE CONCAT(BlockCode,ArsehRow)='01011000106001' 或 获得2分钟返回结果 如何减少运行查询的时间?在表上创建一个包含Block

我有一个表
ArchiveArseh
,大小为15GB,带有engine innoDB的198997行记录(将来还有400G和1000000条记录)

此表包含图像(字段
文档
拇指文档
)。

on字段(
Id
)是主键,4个字段被索引。

说明

运行简单查询时,选择like

SELECT *
FROM archivearseh
WHERE CONCAT(BlockCode,ArsehRow)='01011000106001'

获得2分钟返回结果


如何减少运行查询的时间?

在表上创建一个包含BlockCode和ArsehRow列的索引。

问题在于
中的
不是

 WHERE CONCAT(BlockCode,ArsehRow)='01011000106001'
因此,CANT使用索引,并且必须计算每行的
CONCAT

因此,要么在更新/插入时创建一个触发器来更新列并索引该字段,这样搜索速度会更快(但更新/插入会更慢)

或者做一些减少搜索范围的事情,比如

WHERE BlockCode LIKE '010110%'
  AND CONCAT(BlockCode,ArsehRow)='01011000106001'

15G和198997记录是什么意思?15G的大小与我的表中190000条记录的大小相同,你的意思是15GB?性能问题应包括
EXPLAIN ANALYZE
和一些关于表大小、索引、当前时间性能、期望时间等的信息。
Slow
是一个相对术语,我们需要一个实际值进行比较。我将图像解释添加到我的question@JuanCarlosOropeza请帮帮我…区块码和阿什罗现在有index@chatkai:能否请您创建一个索引为:在表名称(块代码,ARSEHROW)上创建IDX_1;然后使用explain SELECT*您的查询查看索引id是否已被使用。否,使用
WHERE BlockCode='01011000'和ArsehRow='100100'
仍有大量时间…显示explain分析。您是否为
(BlockCode,ArsheRow)
创建了复合索引,但即使这些索引速度很慢,也可能是由于不同的原因。。。你问的问题仍然是不可搜索的,而且会很慢,
shahrdarid
IdDarkhast
BlockCode
ArsehRow
在你的问题上没有看到这一点。给我看
解释分析
在我的评论中,我给你一个链接,教你如何在你不知道的情况下,图片不显示
(BlockCode,ArsheRow)
 SET NewColumn = CONCAT(BlockCode,ArsehRow)
 CREATE INDEX for NewColumn;

 and 

 WHERE NewColumn = '01011000106001'
WHERE BlockCode LIKE '010110%'
  AND CONCAT(BlockCode,ArsehRow)='01011000106001'