Mysql 如何加快MariaDB中数据子集的选择
我有一个巨大的表,其中包含大量数据(170GB压缩大小,380万行),我想选择这些数据的子集 此子集由URI列表定义。我的表中包含URI的列上有一个哈希索引 因此,简单的查询是Mysql 如何加快MariaDB中数据子集的选择,mysql,performance,mariadb,Mysql,Performance,Mariadb,我有一个巨大的表,其中包含大量数据(170GB压缩大小,380万行),我想选择这些数据的子集 此子集由URI列表定义。我的表中包含URI的列上有一个哈希索引 因此,简单的查询是 SELECT * FROM mytable WHERE uri IN ("uri1","uri2","uri") 但是这个查询速度太慢了。对于大约190个URI,它会持续6个多小时 Query OK, 240777 rows affected (6 hours 46 min 1.34 sec) 有没有办法加快选择的速
SELECT * FROM mytable WHERE uri IN ("uri1","uri2","uri")
但是这个查询速度太慢了。对于大约190个URI,它会持续6个多小时
Query OK, 240777 rows affected (6 hours 46 min 1.34 sec)
有没有办法加快选择的速度?目前,在外部工具中迭代整个数据库并转储相关行的速度更快
编辑
以下是对我的问题的解释:
+------+-------------+---------+-------+---------------+----------+---------+------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+---------+-------+---------------+----------+---------+------+--------+-------------+
| 1 | SIMPLE | SOURCES | range | site_uri | site_uri | 257 | NULL | 421418 | Using where |
+------+-------------+---------+-------+---------------+----------+---------+------+--------+-------------+
1 row in set (0.00 sec)
在uri列上有索引吗 单是索引可能会有所帮助。如果不是,那么工会可以让事情变得更快(尽管相当丑陋):
在uri列上有索引吗 单是索引可能会有所帮助。如果不是,那么工会可以让事情变得更快(尽管相当丑陋):
也对这个问题的答案感兴趣。请发布查询和查询解释。您可以测试将搜索uri放在一个带有一个字段和索引的tmp表中,然后从tmptable t LEFT JOIN bigtable j ON t.uri=j.uri中选择j.*这种查询运行得快吗<代码>从mytable中选择*,其中uri=“uri1”请提供
SHOW CREATE TABLE
。也对这个问题的答案感兴趣。请发布查询和查询解释。您可以测试将搜索uri放入一个带有一个字段和索引的tmp表中,然后选择j.*从tmptable t LEFT JOIN bigtable j ON t.uri=j.uri这种查询运行得快吗SELECT*FROM mytable WHERE uri=“uri1”
请提供SHOW CREATE TABLE
。是的,uri列上有索引是的,uri列上有索引
SELECT * FROM mytable WHERE uri = "uri1"
UNION
SELECT * FROM mytable WHERE uri = "uri2"
UNION
SELECT * FROM mytable WHERE uri = "uri"