mysql - 如何在mysql中使用同一个表连接进行优化?
问题描述
我有这个表结构: 表
我需要找到 id_exchange 为 1 和 7 的不同“符号”。我有这个带有子查询的查询:
SELECT DISTINCT symbol
FROM ohlcv
WHERE
id_exchange=1
AND quote_currency='USDT'
AND symbol IN (SELECT DISTINCT symbol FROM ohlcv WHERE id_exchange=7 AND quote_currency='USDT');
它会找到所需的数据,但速度很慢。有没有办法优化它,也许对同一张表进行内部连接?
谢谢!
* 更新 * 我不知道那个 count(symbol) 在那里做了什么,它不是原始查询的一部分,我只是看到了那个错误。我可能一直在做一些测试并复制了错误的。请原谅我的错误。:(
* INDEX 结构 * 显示来自 ohlcv 的索引
解决方案
在优化现有查询的基础上,您可以进行自联接并将条件放在 ON 子句中而不是子查询中:
SELECT DISTINCT t1.symbol
FROM ohlcv AS t1
INNER JOIN ohlcv AS t2 ON t2.id_exchange = 7
WHERE
t1.id_exchange = 1
AND t1.quote_currency = 'USDT'
AND t2.quote_currency = 'USDT'
AND t1.symbol = t2.symbol
推荐阅读
- android - 如何创建响应式 GridView 以覆盖整个屏幕?
- python - 为什么 TimedRotatingFileHandler 不删除旧文件?
- r - 向绘图条形图添加水平线
- java - 如何在子域上生成 SSL 证书?
- java - android studio 无法创建 ActivityRegisterBindingImpl
- python - 随机输入到创建的列表中
- pentaho - Pentaho - 在标题之前跳过 CSV 文件中的 2 行
- oracle-adf - 如何将值从绑定变量复制到 adf 中的迭代器?
- google-sheets - 谷歌表格:如何计算当前周数中的数组条目?
- vue.js - 确定何时在 Vue.js 中使用数据结构方法