我有一堆按日期排序的数据,每个表只包含一个月的数据。 (这是为了减少查询时间,我在说每个月表中有数百万行)MySQL多表查询
例如,
data_01_2010 holds data from 2010-01-01 to 2010-01-31
data_02_2010 holds data from 2010-02-01 to 2010-02-28
有时我必须根据特定的日期范围查询这些表。现在如果范围跨越前几个月。 2010-01-01至2010-02-28然后我需要查询两个表。
这可以通过单个查询来实现吗? 例如像:
SELECT *
FROM data_01_2010, data_02_2010
WHERE date BETWEEN '2010-01-01' AND '2010-02-28'
与上述查询的问题是,它说的柱日期是不明确的,它是,因为该列是存在于两个表中。 (表具有相同的结构)
那么这是可以实现的一个单一的查询或我必须分别查询每个表?
我用PHP编写的逻辑。 我从来没有通过工会。 UNION如何达到查询性能? – feketegy 2010-03-05 16:48:08
使用UNION有点慢,因为它会对结果进行比较并删除重复项,但UNION ALL将忽略重复检查。两者都需要MySQL创建一个临时表,这是一个小开销,但不是很多。见http://www.mysqlperformanceblog.com/2007/10/05/union-vs-union-all-performance/ – adharris 2010-03-05 16:54:30
所以,也许我会更好地使用多个查询呢? – feketegy 2010-03-05 16:56:30