[英]Mysql BIgQuery to one to many relationship
我創建了具有一對多關系,行大小為11328441
。 表結構是
CREATE TABLE `gameresnum` (
`ID` bigint(20) NOT NULL,
`DRAWDAY` date DEFAULT NULL,
`DRAWNO` int(11) DEFAULT NULL,
`DRAWTIME` time DEFAULT NULL,
`RESNUM` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `gameresnum`
ADD PRIMARY KEY (`ID`),
ADD KEY `RESNUM` (`RESNUM`);
。
我試圖使這個查詢:
SELECT count(*) as count FROM gameresnum gone
JOIN gameresnum gtwo ON gone.DRAWNO=gtwo.DRAWNO WHERE gone.RESNUM=1 AND gtwo.RESNUM=2
但這是非常緩慢的,直到2薄荷糖。
您的drawo列沒有索引。 這就是為什么。
您的查詢將受益於
INDEX(resnum, drawno) -- composite and covering
您也可以嘗試
SELECT COUNT(*)
FROM (
SELECT 1
FROM gamesresnum
WHERE resnum IN (1, 2)
GROUP BY drawno
HAVING COUNT(*) = 2 -- to see if both are present
) AS x
它需要INDEX(drawno, resnum)
。
注意事項:這種重新定義假定(drawno, resnum)
是唯一的。 我不知道這樣會不會更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.