mysql - 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 专家。
解决方案
在 上添加索引number_complete
。
ALTER TABLE table1
ADD INDEX (number_complete);
由于默认情况下索引是 B 树,这使得匹配前缀相当有效,并且LIKE
能够利用这一点。
推荐阅读
- css - 如何在站点中间居中文本并删除滚动条?
- python - 如何在 mongoengine marshmallow 中序列化十进制字段?
- prolog - 必须在 Prolog 中使用约束
- r - 通过共同的经纬度对匹配两个数据帧,并从中创建一个新列
- python - 导入 lightgbm 返回非零退出状态 2
- javascript - 使用 await/async JS 的图像比较
- reactjs - 子域是否共享本地存储?
- python - 正则表达式跳过不需要的所有格组
- powershell - 从 https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/ADV990001 抓取链接
- html - 条纹边框,如示例图像 css