我有两张表,让它们成为data和newdata。我的查询应该从data中选择所有行,其中 double 类型的价格小于newdata中的另一个双字段价格。表中的每一行都由其主键articleno 标识。
我这样做的查询看起来像这样(不是实际查询,因为在实时场景中要选择更多列,但比较基本上是这样的):
SELECT
data.articleno,
data.articledesc
data.price
FROM
data,
newdata
WHERE
data.articleno = newdata.articleno
AND data.price < newdata.price
限制设置为 10 个或小表,这很好用。但是我需要处理的表的大小高达 120k 行。上次我在包含 50k 行的两个表上运行此查询时,获取所有数据大约需要 180 秒。
问题:如何加快速度?我想过做一个JOIN,然后用比较做选择,但这不应该更糟糕吗?并且:为什么这个比较这么慢?这是双重的吗,我应该使用 float 代替(如果更快的话)?
顺便说一下,需要在 MySQL 5.1 上工作。