【发布时间】:2015-05-09 08:00:21
【问题描述】:
示例查询:
SELECT
table1.t1_id,table1.name,
table2.address,
(
SELECT message
FROM table3
WHERE logid = table1.t1_id
AND message NOT LIKE "[ SYSTEM%"
ORDER BY logs
DESC LIMIT 1
) as message
FROM table1
INNER JOIN table2
ON table1.t1_id = table2.t2_id
WHERE table1.dateCreated
BETWEEN CAST('2015-01-01' as Date)
AND CAST('2015-05-30' as Date)
ORDER BY table1.dateCreated DESC
预期输出:
id | name | address | message |
注意:假设表 1 和表 2 有数千行,而表 3 有数百万行
【问题讨论】:
-
您的查询需要多长时间才能执行?我的意思是基准。
-
根据 phpmyadmin 显示第 0 - 29 行(总共 1,002 行,查询耗时 27.2299 秒)。
-
您能否以创建表的形式发布 SQL Fiddle 或数据库架构,并插入带有示例数据的语句?
-
您是否尝试过加入表 3 并使用 GROUP BY table1&2.columns 然后 MAX(table3.message)?
-
演员表好像没必要
标签: php mysql sql subquery query-optimization