时,我有两个表性能问题试图查询基于级联列在SQL
表1:
-------------------------------
id | pid | name | place | num |
-------------------------------
表2:
------------------
pid | name | key |
------------------
现在我正在写一个查询这是一个两列连接,一个来自table1,另一个来自table2。
select *
from table1 join table2
on table1.pid = table2.pid
and table2.key + '-' + table1.num = 'ABC-123'
由于这级联是在其再次以最扫描的行,结果两个表进行,结果取很慢,这将是预期不是瞬间。
在这种情况下,什么是明智的。谁能帮我这个。
最初它被认为是创建一个基于函数的索引,以便有一些性能增益,但我不确定这是否会有所帮助。此外,我无法在不同表格的两列上创建基于函数的索引。
新援:
给出的答案是合法的,但我觉得它会从我的实际需求了。如果我有这样的要求
select table2.key + '-' + table1.num identity
from table1 join table2
on table1.pid = table2.pid
实际的要求是,我必须连接来自两个表的值并将其公开在视图中。然后任何人都可以从视图中查询该列标识。所以基本上,连接将是必须的。
如果不需要所有列始终从表中选择特定的列,如从表名选择column1,column2。 – 2015-03-31 12:05:10
在我看来像table2.key +' - '+ table1。num ='ABC-123'应该是不是连接条件的一部分的where子句的一部分 – 2015-03-31 14:20:01