SELECT Trade.TradeId, Trade.Type, Trade.Symbol, Trade.TradeDate,
SUM(TradeLine.Notional) / 1000 AS Expr1
FROM Trade INNER JOIN
TradeLine ON Trade.TradeId = TradeLine.TradeId
WHERE (TradeLine.Id IN
(SELECT PairOffId
FROM TradeLine AS TradeLine_1
WHERE (TradeDate <= '2011-05-11')
GROUP BY PairOffId
HAVING (SUM(Notional) <> 0)))
GROUP BY Trade.TradeId, Trade.Type, Trade.Symbol, Trade.TradeDate
ORDER BY Trade.Type, Trade.TradeDate
Run Code Online (Sandbox Code Playgroud)
当表开始增长时,我担心WHERE子句中IN的性能.有没有人对这种查询有更好的策略?子查询返回的记录数比TradeLine表中的记录数慢得多.TradeLine表本身以10 /天的速度增长.
谢谢.
编辑:我使用了将子查询从WHERE移动到FROM的想法.我投票支持了这个新查询的所有答案.
SELECT Trade.TradeId, Trade.Type, Trade.Symbol, Trade.TradeDate,
PairOff.Notional / 1000 AS Expr1
FROM Trade INNER JOIN
TradeLine ON Trade.TradeId = TradeLine.TradeId INNER JOIN
(SELECT PairOffId, SUM(Notional) AS Notional
FROM …Run Code Online (Sandbox Code Playgroud) 可以使用以下查询吗?性能如何?
select * from table where id not in ( 2000 or much more ids here)
Run Code Online (Sandbox Code Playgroud)
我的初始测试非常快,但我想这是因为我是唯一正在使用服务器的人.
我正在寻找一种优化我所拥有的SQL查询的方法.我正在努力获得一定数量的诗歌.
查询看起来像这样:
SELECT
COUNT(*)
FROM
`poems`
WHERE `id` IN (
SELECT `poem_id`
FROM `poems_genres`
WHERE `genre_title` = 'derision'
)
AND `status` = 'finished';
Run Code Online (Sandbox Code Playgroud)
它需要太长时间(大约6-10秒),因为它不能使用索引(因为我认为IN()?).有没有办法以不同的方式重写此查询以更快地获得相同的结果?
我在学生和班级之间有多对多的关系,如下所示.我想获得所有未注册任何课程的学生的ID.

由于数据集的大小,我想避免使用NOT IN.有更有效的解决方案吗?
有没有办法优化这个查询更快?
SELECT id FROM business
WHERE id NOT IN(SELECT business_id FROM business_community GROUP BY business_id)
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下结构的行/数据的表
-----------
| SURVEY_ID |
------------
| 1 |
| 2 |
| 2 |
| 3 |
| 4 |
-----------
Run Code Online (Sandbox Code Playgroud)
我想在同一查询中获取不同的 ID 和最大 ID。我试过
select distinct(survey_id) as survey_id , max(survey_id) as current
from survey_main
group by survey_id
Run Code Online (Sandbox Code Playgroud)
这似乎没有返回正确的结果。我缺少什么?
编辑:所需结果
----------------------
| 与众不同| 最大|
----------------------
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 4 | 4 |
----------------------
我正在尝试运行以下MySQL查询:
SELECT *
FROM user u
JOIN user_categories uc ON u.user_id = uc.user_id
WHERE (uc.category_id = 3 OR uc.category_id = 1)
Run Code Online (Sandbox Code Playgroud)
它目前返回:
Joe,Smith,60657,male
Joe,Smith,60657,male
Mickey,Mouse,60613,female
Petter,Pan,60625,male
Petter,Pan,60625,male
Donald,Duck,60615,male
Run Code Online (Sandbox Code Playgroud)
如果用户属于这两个类别,则它当前将返回两次.如何在不使用SELECT DISTINCT的情况下仅返回用户一次,无论他们属于多少个类别?