微软的mssql有没有象oracle一样的强制索引,如何使用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微软的mssql有没有象oracle一样的强制索引,如何使用?相关的知识,希望对你有一定的参考价值。
select id from t with(index(索引名)) where num=@num 参考技术A你是需要这样的 对照功能么?
Oracle 里面
INDEX提示
普通索引提示,用于在多个索引中,指定使用哪一个。
例如:
SELECT /*+ index(表名, 索引名) */ * FROM 表 WHERE 查询条件。
SQL Server 里面
INDEX提示普通索引提示,用于在多个索引中,指定使用哪一个。
例如:
SELECT
*
FROM
MeterData WITH (INDEX(rt))
WHERE
main.meterID = 'ABC'
AND main.readtime < GETDATE()
oracle如何避免查询数据的时候索引失效
oracle可以使用强制索引,举个例子比如在条件诸多的sql中为了确保优先正确的使用最高效的索引可以这样写
select /*+index(a,index_name)*/ * from table_name a where col_a=? and col_b=? and col_c=? and ...;
注意() 里面的a如果表有别名要用别名如果没有就用表名,这样就会强制使用你想要用的索引了。 参考技术A 索引失效会有很多中情况了,比如like or <>等这些都可以导致索引失效,还有隐式的转换,比如数据库里是字符,而你写的时候没有带引号,会有一个隐式的转换,也会导致索引失效,还有在列上的函数也会使索引失效,如果在该列上经常会使用函数,那么建一个函数索引会比较理想。 参考技术B 要看是否失效,你可以对建立索引的表进行analyze分析先,具体语句是
analyze table **** compute statistics;如果有失效索引会提示错误
以上是关于微软的mssql有没有象oracle一样的强制索引,如何使用?的主要内容,如果未能解决你的问题,请参考以下文章