【发布时间】:2012-11-08 12:16:54
【问题描述】:
我正在尝试编写 SQL (Sybase) 查询以从数据库中获取电影院信息。当我运行下面的查询时,查询只会继续运行。最终,大约 5 分钟后,我放弃了它。没有错误/非法的 SQL,它只是 慢!
SELECT
TM.type_prefix +
right('00000000' + convert(varchar, TM.showing_id), 8) +
right('0000' + convert(varchar, TM.theatre_id), 4) as data_id
FROM
theatre_times..theatre_mappings TM,
theatres..region_codes RC,
title_summaries..movie_summary MS
WHERE
TM.scheme_id = 512 AND
RC.region_code_id = MS.region_code_id
不要担心查询中使用的表名或逻辑,我只是想知道是否有什么明显我做错了或效率低下。以下是所有三个表的计数:
-
theatre_mappings= 2,094,163 -
region_codes= 11,140,348 -
movie_summary= 6,437,782
提前致谢!
【问题讨论】:
-
你有这个...
tm CROSS JOIN (rc INNER JOIN ms ON RC.region_code_id = MS.region_code_id)这真的正确吗?或者是否应该使用一个字段将tm连接到rc,或将tm连接到ms?另外,请注意,如果您使用显式的JOIN语法,那么犯这些错误会变得更加困难。 (如果确实是一个错误。)
标签: sql optimization sybase sql-execution-plan