我有两个MySQL表,其结构相同,我存储数据:
tableA(id, value, updatedAt)
tableB(id, value, updatedAt)
第三方应用程序执行SELECT value FROM myTable WHERE id = 123
。现在,我希望该查询同时查看tableA
和tableB
,并从具有最新value
日期时间的updatedAt
返回id
。
myTable
,它可能只在其中一个表中,两者都没有。tableA
开始大约有2k / s的选择,那些需要快速。tableB
和CREATE VIEW myTable AS
(select * from tableA)
UNION
(select * from tableB)
ORDER BY updatedAt DESC LIMIT 1
的更新时间约为200万次。更新不得破坏选择性能,但不能快速。我试图创建一个视图。
UNION
但是因为我使用TEMPTABLE
MySQL会使用id
算法,除了不工作之外,它的速度非常慢。
我的第二次尝试不支持CREATE VIEW myTable AS
SELECT
IF(a.updatedAt > b.updatedAt, a.id, b.id) AS id,
IF(a.updatedAt > b.updatedAt, a.value, b.value) AS value,
IF(a.updatedAt > b.updatedAt, a.modifiedAt, b.updatedAt) AS updatedAt
FROM tableA AS a
LEFT OUTER JOIN tableB AS b ON a.id = b.id
是否仅存在于其中一个表中(假设我使用了错误的JOIN?),除此之外它看起来很丑陋。
#!/usr/bin/env python
由于
答案 0 :(得分:0)
你可以试试这个:
CREATE VIEW myTable AS
SELECT
IF(a.updatedAt > b.updatedAt, a.id, b.id) AS id,
IF(a.updatedAt > b.updatedAt, a.value, b.value) AS VALUE,
IF(a.updatedAt > b.updatedAt, a.modifiedAt, b.updatedAt) AS updatedAt
FROM tableA a, tableB b;