首页 > 解决方案 > SQL 练习:需要帮助

问题描述

发明一个测试练习,这样你就可以帮助我:

我们有两个表,如下所示:

表格1:

id: auto_increment (primary key)
number_complete: varchar(255)

表2:

id: auto_increment (primary key)
name: varchar(255)
number_cut: varchar(255)

我们在每个表中都有这些数据:

表格1:

在此处输入图像描述

表2:

在此处输入图像描述

确实,表 1 中有超过 100 万条记录,而第二张表中有 34000 条记录。

我正在寻找的结果是这样的:

在此处输入图像描述

他正在执行并继续执行的是这句话:

select t2.name, count(t1.id) 
from table1 as t1, table2 as t2
where t1.number_complete like concat(t2.number_cut,'%')
group by t2.name;

但是此时我已经等待了将近 1 个小时来执行该语句,因为您可能意识到我不是 SQL 专家。

标签: mysqlsql

解决方案


在 上添加索引number_complete

ALTER TABLE table1
ADD INDEX (number_complete);

由于默认情况下索引是 B 树,这使得匹配前缀相当有效,并且LIKE能够利用这一点。


推荐阅读