【发布时间】:2018-03-09 19:55:56
【问题描述】:
我正在对表 interim_19 执行 67.500 行的 sql 请求。表没有索引,并且有 7 列,其中非唯一/主键,因为主要数据 Abonent 和 idBase 是重复的,在所有数据中我有 7-8 个不同的 idBases 和 ~10.000 个不同的 @ 987654325@,而其他数据如date 在唯一性方面不可靠。
问题在于该表的内部连接速度较慢。
如果我执行SELECT * FROM interim_19 WHERE idBase IN (1551 , 42286 ) 将需要 1.33 秒,SELECT * FROM interim_19 WHERE idBase IN (1535 , 5406 ) 将需要 1.9 秒,无论
SELECT * FROM (SELECT * FROM interim_19 WHERE idBase IN (1551 , 42286 ))
temp1
inner join
(SELECT * FROM interim_19 WHERE idBase IN (1535 , 5406 )) temp2
on temp1.Abonent = temp2.Abonent
需要永远 - 147-157 秒。我知道内部连接确实将每一行与第二个表上的每一行进行比较,但这不应该花这么长时间。 OFC 它会重复,但我需要所有 7+7 行,所以...
P.S 我已经在尝试索引它,所以也欢迎其他建议。
【问题讨论】:
-
我没有看到派生表的原因并直接加入表。此外,仅选择您实际需要的列。 “SELECT *”对你没有任何好处。
-
是 mySql 还是 SQL Server ?请编辑您的标签