sql server海量数据库的查询优化及分页算法方案(4)
来源:天蓝的专栏 发布时间:2010-07-02 21:17:00
二、改善SQL语句
很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:
select * from table1 where name='zhangsan' and tID > 10000
和执行:
select * from table1 where tID > 10000 and name='zhangsan'
一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name='zhangsan'的,而后再根据限制条件条件tID>10000来提出查询结果。
事实上,这样的担心是不必要的。SQL SERVER中有一个“查询分析优化器”,它可以计算出where子句中的搜索条件并确定哪个索引能缩小表扫描的搜索空间,也就是说,它能实现自动优化。
虽然查询优化器可以根据where子句自动的进行查询优化,但大家仍然有必要了解一下“查询优化器”的工作原理,如非这样,有时查询优化器就会不按照您的本意进行快速查询。
在查询分析阶段,查询优化器查看查询的每个阶段并决定限制需要扫描的数据量是否有用。如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化的,并且可以利用索引快速获得所需数据。
SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接。形式如下:
列名 操作符 <常数 或 变量>
或
<常数 或 变量> 操作符列名
列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边。如:
Name=’张三’
价格>5000
5000<价格
Name=’张三’ and 价格>5000
如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是SQL SERVER必须对每一行都判断它是否满足WHERE子句中的所有条件。所以一个索引对于不满足SARG形式的表达式来说是无用的。


猜你喜欢
- 先来看看完成后的效果是怎么样的开发环境版 本:anaconda(python3.8.8)编辑器:pycharm代码实现步骤实现免登陆选座并且
- hash//从井号 (#) 开始的 URL(锚)host//主机名和当前 URL 的端口号hostname//当前 URL 的主机名href
- pickle的作用:1:pickle.dump(dict,file)把字典转为二进制存入文件.2:pickle.load(file)把文件二
- 下面的asp函数实现了对站点的所有缓存Application的清理,释放!Sub RemoveAllCache() D
- 用Go语言实现登录验证,有3次机会,如果用户名为 zhangsan ,密码为 123456 ,则提示登录成功,否则提示还有几次机会,次数用完
- 路由通常HTTP URL的格式是这样的:http://host[:port][path]http表示协议。host表示主机。port为端口,
- 我遇到过这种情况 就是在我的data中 会有数据调用data中的其他数据如图 我的alertInfoType需要拿到screeningCon
- 本文主要向大家分享了Python3调用微信企业号API发送文本消息示例的有关代码,具体如下:#!/usr/bin/env python# -
- 搭建vue的开发环境:1、必须要安装nodejs2、搭建vue的开发环境 ,安装vue的脚手架工具 官方命令行工具npm install -
- 非常好的边框样式设置工具,使用该工具您可以很方便的为DIV设置简单的边框样式,如果放在DW中会更好。会制作DW插件的高手,请帮忙制作成DW插
- 如下所示:from pandas_datareader import data, wbfrom datetime import dateti
- 前言ppi-cpi 剪刀差大家可能都听说过,通过这个指标可以了解当前的经济运行状况,小编为了学习 python 的图形绘制,通过爬
- 这篇文章为大家提供了Mysql的安装包,详细的安装步骤,以及安装过程中出现的问题的解决方案,希望对大家有所帮助......工具:Mysql
- 给定图像集如下,所有类别的图片均在一个文件夹内:给定与图片名相匹配的表格,声明每张图片对应的类别(共有20个类别):那么,如何根据表格中所给
- python导出chrome书签到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字
- import os ## for os.path.isfile()def dealline(line) :  
- 1、使用基础Python代码来读写和处理CSV文件import sys#使用基础Python代码来读写和处理CSV文件input_file
- 1. 前言我们已经知道,对于InnoDB存储引擎而言,页是磁盘和内存交互的基本单位。哪怕你要读取一条记录,InnoDB也会将整个索引页加载到
- wheel文件Wheel和Egg都是python的打包格式,目的是支持不需要编译或制作的安装过程,实际上也是一种压缩文件,将.whl的后缀改
- 用户认证组件:功能:用session记录登录验证状态前提:用户表:django自带的auth-userpython3 manage.py c