gpt4 book ai didi

mysql - SQL 查询执行得更快 - 表之间没有关系 - 更快地生成结果

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:18 28 4
gpt4 key购买 nike

我有 4 个单独的表,如下所示,每个表都有相同的 5 列(ID、Shape1、Shape2、Shape3、Shape4)。所有 4 个表之间没有任何关系。想不出任何可能的关系。

Table Design

每个表有 1 亿行数据,100 X 4 = 4 亿

如果我运行下面的查询

SELECT id 
FROM Table1
WHERE 'Shape1' = 400 AND Shape 'Shape2' = 300 AND 'Shape3' = 500 AND 'Shape4' = 200

它在 1.232 秒内搜索每个表。这就是瓶颈所在,当单独运行时,我必须等待 9.032 秒才能完成所有四个查询。

我也像下面那样尝试了 UNION 但它真的很慢 17.042 秒 UNION

不确定这里是否连接表,因为没有任何东西可以连接在一起。我知道

我的问题:- 你能一起搜索所有这些表吗?在单个查询中组合或单独执行查询是加快执行速度的唯一方法。

机器数据库:- win 7 X64 - 64 GB RAM COREi7 SSD 磁盘。

DB 信息:- 用于测试的内存表,每个表达到 1.232 秒 - Select 语句

数据库生产:- MyISAM 表达到每个表 2.808 秒 - 选择语句

最佳答案

这个查询:

SELECT id 
FROM Table1
WHERE 'Shape1' = 400 AND Shape 'Shape2' = 300 AND 'Shape3' = 500 AND 'Shape4' = 200

可能不会按照您的预期进行。它不应返回任何行,因为您正在将字符串与整数进行比较。

写成:

SELECT id 
FROM Table1
WHERE Shape1 = 400 AND Shape2 = 300 AND Shape3 = 500 AND Shape4 = 200

所有比较都是相等比较。所以,试试这个索引:

CREATE INDEX idx_table1_5 ON table1(Shape1, Shape2, Shape3, Shape4, id);

这应该会加快第一个查询的速度。您可以为其他表创建类似的索引。

注意:前四列的顺序无关紧要。但是 id 应该是最后一个。

关于mysql - SQL 查询执行得更快 - 表之间没有关系 - 更快地生成结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38331996/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com