`
yangshen998
  • 浏览: 1247455 次
文章分类
社区版块
存档分类
最新评论

指定索引

 
阅读更多

近来发现,SELECT * FROM ... 与 SELECT COUNT(*) FROM ...性能居然很不一样。在我的测试用例中,前者比后者快好多。

按照不假思索的理解,应该是SELECT COUNT(*)要快才对啊,只看多少条就行了;就算比SELECT * FROM 慢,也应该是慢一点点,数一下返回来的记录数不就行啦?对计算机来说,应该是轻而易举的事情。

可是偏不。

查看实际执行计划,发现两种语句的执行路径根本不一样。(不过其中的执行步骤,我也看不懂)

用到的索引居然也不同。

测试用例中,我这个表有这么两个索引,一个聚集,一个非聚集,都用到某一个列。在SELECT *中,优化器用的是聚集索引,而SELECT COUNT(*)中,用的却是那个非聚集索引。那个非聚集索引,是个复合索引,有两个字段,身躯庞大,看上去傻傻的,你用它,不慢才怪。但是优化器为什么这么喜欢用它,自动挑中它,真是天晓得了。

幸亏世界上还有在SQL语句中指定索引这么一说:

SELECT COUNT(*) FROM Table1 WITH(INDEX(索引名)) WHERE ...

指定我钟意的聚集索引,结果果然快多了。

对比如下:

SELECT COUNT(*)

未指定索引前,最快21秒,最慢30秒

指定索引,6秒

SELECT *,2秒

分享到:
评论

相关推荐

    在pandas多重索引multiIndex中选定指定索引的行方法

    在multiIndex中选定指定索引的行 我们在用pandas类似groupby来使用多重index时,有时想要对多个level中的某个index对应的行进行操作,就需要在dataframe中找到该index对应的行,在单层index中我们可以方便的使用df....

    UltraEdit脚本(剪切文件中指定索引的行到新文件中)

    朋友有一个需求,是要在一个包含几十万条数据的文档中提取所有包含指定关键字的整行文字到另外一个文档中,于是研究了下。整合出这么一个脚本。 功能:分离源文件中的所有包含指定关键字的数据到另外一个文件中 ...

    天涯易栈VC++网页操作类

    //获取指定索引按钮(Button)的类型(type),“button”、“submit”、“reset” /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页Div~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int GetDivCount();//返回网页内...

    索引、视图、标准SQL测试方法

    --建表,建一个表空间TS1,在表的一列上建普通索引,并指定索引的物理存储(初始簇大小为 50,下次分配簇数目为50,所在表空间为TS1)。伪SQL代码如下: create table t(c1 int, c2 char(10), c3 date); create ...

    Oracle解决索引碎片功能.txt

    Oracle解决索引碎片功能.txt

    在JS数组特定索引处指定位置插入元素的技巧

    如何在JS数组特定索引处指定位置插入元素? 需求: 将一个元素插入到现有数组的特定索引处。听起来很容易和常见,但需要一点时间来研究它。 // 原来的数组 var array = [one, two, four]; // splice(position, ...

    Oracle创建表空间以及用户等操作

    Oracle创建表空间、创建用户并指定表空间、给用户授予权限

    查询一个指定字符在数组里的索引,返回索引

    查询指定字符在数组里的索引

    Cocos Creator TableView.ts 翻译 Cocos2dx cc.TableView

    之前一直做Cocos2dx开发的TableView用得比较多,自己也扩展了一些功能,新公司用的Creator,所以翻译了个ts版本的,核心代码和函数名与cocos2dx的一致。...2、删除指定索引处的单元格 removeCellAtIndex

    SQL2005入门到精通(15)

    317 15.2.3 创建惟一索引 317 15.2.4 创建聚集索引 319 15.2.5 指定索引存放的文件组 320 15.3 用ALTER INDEX语句修改索引 321 15.3.1 基本语法 321 15.3.2 设置索引的选项 322 15.3.3 禁用/...

    charat方法的用法及其说明

    返回指定索引位置处的字符。 strObj.charAt(index) 参数 strObj 必选项。任意 String 对象或文字。 index必选项。想得到的字符的基于零的索引。有效值是 0 与字符串长度减 1 之间的值。 说明 charAt 方法返回...

    javascript文档

    charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 逗号运算符 (,) 使两个表达式连续执行。 /*..*/ (多行注释语句) 使多行注释部分被 JScript 语法分析器忽略。 ...

    JScript 语言参考

    charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 逗号运算符 (,) 使两个表达式连续执行。 /*..*/ (多行注释语句) 使多行注释部分被 JScript 语法分析器忽略。 ...

    微软JavaScript手册

    charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 逗号运算符 (,) 使两个表达式连续执行。 /*..*/ (多行注释语句) 使多行注释部分被 JScript 语法分析器忽略。 ...

    SQL查询语句优化总结

    第八掌 利用HINT强制指定索引 6 第九掌 屏蔽无用索引 6 第十掌 分解复杂查询,用常量代替变量 7 第十一掌 like子句尽量前端匹配 7 第十二掌 用Case语句合并多重扫描 7 第十三掌 使用nls_date_format 8 第十四掌 使用...

    开源桌面全文搜索软件DocFetcher,支持多个关键字

    然而,它比 Google Desktop 好的地方就是可以由用户指定索引的文件夹和文件格式。由于 Google Desktop 和 百度硬盘搜索 等进行全硬盘的全文索引实在太太太太太慢了,而且很久都没更新了 (估计都被官方抛弃了)。...

    数据库系统概论chp3-2.pptx

    <表名>:要建索引的基本表的名字 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔 <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE:此索引的每一个索引值只对应唯一的数据...

    ArrayList常用的方法

    RemoveAt 移除 ArrayList 的指定索引處的元素 Insert 將元素插入 ArrayList 的指定索引處 ArrayList arrlist = new ArrayList(); //..使用 Add方法在 ArrayList中添加元素(添加到ArrayList末尾) arrlist.Add...

Global site tag (gtag.js) - Google Analytics