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

标签 mysql sql database performance

我有 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 磁盘。

数据库信息:- 用于测试每个表 1.232 秒的内存表 - Select 语句

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

最佳答案

此查询:

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/

相关文章:

php - Xampp Phpmyadmin 停止工作

Mysql 在第三个表上使用 WHERE 连接三个表

mysql - 使用mysql获取错误: access denied for Node. js

php - MySQLi插入不带有md5哈希

sql - 更新表中给定年份的所有时间戳

sql - "Order by "如何设置为数字排序

mysql - : 30 separate queries, 或 30 OR 条件哪个更快?

PHP注册表格与mysql

sql - 如何监控SQL Server 2005上执行的sql语句

.net - 我有数十万页需要扫描和记录