簡體   English   中英

Mysql BIgQuery一對多關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM