我有一堆按日期排序的數據,每個表只包含一個月的數據。 (這是爲了減少查詢時間,我在說每個月表中有數百萬行)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