查询优化-索引

索引与主键的区别

http://database.51cto.com/art/201108/279897.htm

WITH cr AS (SELECT ROW_NUMBER() OVER(ORDER BY Time_t desc) rownumber,Msg_id, modelid,infoId,Time_t,User_id FROM t_msg_info WITH(NOLOCK) WHERE Time_t<=GETDATE() and isShow=1 AND access_type_id=1 and [Type] IN (20,6,11,21,9,28,10,8))
SELECT * from cr WHERE rownumber > 10000 AND  rownumber < 10020

WITH cr AS (SELECT ROW_NUMBER() OVER(ORDER BY Msg_id desc) rownumber,Msg_id, modelid,infoId,Time_t,User_id FROM t_msg_info WITH(NOLOCK) WHERE Time_t<=GETDATE() and isShow=1 AND access_type_id=1 and [Type] IN (20,6,11,21,9,28,10,8))
SELECT * from cr WHERE rownumber > 10000 AND  rownumber < 10020

两句话,只一个order by 的字段发生了改变,其查询速度大幅度提升。

这就是主键(索引)带来的好处

另外 用 > <比用 between and快那么稍微一丢丢 。

分页排序的相关信息查看此文:http://www.cnblogs.com/iamowen/archive/2011/11/03/2235068.html

时间: 2024-12-17 18:49:47

查询优化-索引的相关文章

记一次T-SQL查询优化 索引的重要性

原文:记一次T-SQL查询优化 索引的重要性 概述 在一次调优一个项目组件的性能问题时,发现SQL的设计真的是非常的重要,所以写一篇博文来记录总结一下. 环境介绍 这个项目组件是一个Window服务,内部在使用轮循机会在处理一个事件表中的事件,将其转换在对应的任务.性能问题在于,统计下来,这个服务一秒的时间内只能处理完成12条左右.这个性能是非常的差. 我使用的SQL版本是SQL 2012,机器是CPU I7-2670,内存16G,SSD硬盘. 在这个数据库中有一个表的数据量大概30万条数据,并

sql查询优化 索引优化

sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果.3)少用子查询4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制. 最好是把连接拆开成较小的几个部

2???? 索引及查询优化

2     索引及查询优化 索引的类型 ? 普通索引:这是最基本的索引类型,没唯一性之类的限制. ? 唯一性索引:和普通索引基本相同,但所有的索引列值保持唯一性. ? 主键:主键是一种唯一索引,但必须指定为"PRIMARY KEY". ? 全文索引:MYSQL从3.23.23开始支持全文索引和全文检索.在MYSQL中,全文索引的索引类型为FULLTEXT.全文索引可以在VARCHAR或者TEXT类型的列上创建. 大多数MySQL索引(PRIMARY KEY.UNIQUE.INDEX和F

数据库之索引与慢查询优化

索引与慢查询优化 索引就类似于书的目录,可以加快数据查询速度 索引虽然能够加速查询 但是也不是越多越好 索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的一种数据结构. primary key unique key index key 上面三种key前两种除了有加速查询的效果之外还有额外的约束条件(primary key:非空且唯一,unique key:唯一),而index key没有任何约束功能只会帮你加速查询 本质都是:通过不断地缩小想要获取数据的范围来筛选出最终想要的

mysql性能优化-慢查询分析、优化索引和配置

一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_buffer

论索引的重要性

1.以前虽然知道索引可以优化查询速度.但是一直没有怎么重视.所以建表的时候也基本不会太多考虑索引的事. 2.至从遇到一张有50多万条数据的表里查数据 select m.miid from MemberInfo  m  where m.userid=301212 起先这个where 条件的userid字段 是没有加索引的.执行时间11秒左右. 3.加上索引之后.该语句执行时间0.016秒,这速度的提升是相当可怕的. 这次的经历让我重新认识了索引的重要性.再次记录 以下附数据库查询优化 ------

mysql性能优化-慢查询分析、优化索引和配置【转】

一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_buffer

MySQL视图、触发器、事务、存储过程、内置函数、流程控制、索引

一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view teacher2course as #把下面查询的结果放在视图teacher2course中 select * from teacher inner join course on teacher.tid = course.teacher_id; 注意: 1.视图只有表结构,视图中的数据还是来源于原来的表

Mysql优化(转)

Mysql优化主要通过执行计划,索引,sql语句,调整mysql内部配置 (http://blog.chinaunix.net/uid-11640640-id-3426908.html) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)