我有一个非常简单的子查询,但我认为我遗漏了一些东西,因为MySQL永远运行它。
假设我有两个表,FruitGenre
和FruitFlavor
FRUIT GENRE
| id | name |
| 1 | apple |
| 2 | orange |
FRUIT FLAVOR
| fruit_id | flavor |
| 1 | cherry |
| 2 | orange |
是的,你可以吃樱桃味的苹果。但是任何味道都只与一种水果相关(例如,樱桃味樱桃不能)。
我的要求如下:
SELECT * FROM FruitGenre WHERE id IN (SELECT fruit_id FROM FruitFlavor where FruitFlavor.flavor='cherry')
然而,我可以等一个小时仍然没有休息。但如果我将请求分成两部分,我会立即得到答复。
Spliited:
SELECT fruit_id FROM FruitFlavor where FruitFlavor.flavor='cherry';
SELECT * FROM FruitGenre WHERE id IN (id_written_on_paper_from_previous_request)
任何帮助将不胜感激。
答案 0 :(得分:1)
你可以尝试:
SELECT FG.* FROM FruitGenre FG
left join FruitFlavor FF
on FF.id = FG.id
where FF.flavor='cherry'
如果在FF.flavo中添加索引。查询会更快
答案 1 :(得分:0)
使用let border = SKPhysicsBody(edgeLoopFrom: self.frame)
self.physicsBody = border
func didBegin(_ contact: SKPhysicsContact) {
let bodyAName = contact.bodyA.node?.name
let bodyBName = contact.bodyB.node?.name
print(bodyAName)
print(bodyBName)
}
IntStream.rangeClosed(1, 26)
.filter(it -> isPrime(it))
.peek(every(5, System.out::println))
.onFinalValue( it -> System.out.println("Last value is: " + it))
.forEach( it -> {});
使用EXISTS
SELECT * FROM FruitGenre FG
WHERE Exists (SELECT fruit_id
FROM FruitFlavor FF
where FG.id = FF.fruit_id
AND FF.FruitFlavor.flavor='cherry')
注意:
INNER JOIN
表的SELECT FG.id,
FG.NAME
FROM fruitgenre FG
INNER JOIN fruitflavor FF
ON FF.id = FG.id
WHERE FF.flavor = 'cherry'
列上没有任何索引,那么
在其上创建一个非聚集索引ID
表的FRUITGENRE
列上没有任何索引
然后在其上创建一个非聚集索引(考虑到您的查询和表大小,需要很多索引)