【发布时间】:2015-03-24 01:21:03
【问题描述】:
我在sql server 2012中创建了一个视图,如:
create myview as
select mytable2.name
from mytable1 t1
join myTable2 t2
on t1.id = t2.id
我希望连接 table1 和 table2 将具有正确的索引 (id),但是当我这样做时:
select * from myview
where name = 'abcd'
我希望最后一个选择将带有列“名称”的索引。
正如我所描述的,在带有提示(调整)的 sql server 中,运行得最好的正确语法是什么?
我想强制使用索引仅用于连接目的(列 = id),并在执行时强制使用索引名称:
select name from myview
where name = 'abcd'.
类似
create myview as
select mytable2.name
/* index hint name on column name */
from mytable1 t1
join myTable2 t2
/* index hint name on column id - just for join */
on t1.id = t2.id
我不想强迫使用视图的最终用户在执行视图时添加提示 - 只需将视图作为他的视图,并提供适当的索引提示。 (或者,如果不可能 - 我该怎么做)。
需要样品,请。
谢谢:)
【问题讨论】:
-
myTable1 和 myTable2 是什么关系?是一对多吗?
-
一对多。我只是想知道这是什么概念,拜托。谢谢:)
-
Name列上有索引吗? -
即使我有一个索引,我的查询也有大约 200 行——更复杂。我只是想知道这个概念(例如使用(index(indx_name))从myview中选择名称),作为我对下面第一个答案的评论。
-
我更改了我原来的帖子,以便更好地理解。
标签: sql-server hint