MSSQL中IN是否用索引.....

鼎捷T100二次开发实战:如何给开窗功能加上权限锁(附完整代码) 本文详细解析了鼎捷T100二次开发中开窗功能权限锁的实现方法,提供了两种技术方案:开窗程序重构法和动态WHERE条件注入法,并附上完整代码示例。通过真实案例,帮助开发者解决数据权限细粒度控制的难题,提升ERP系统的安全性和实用性。 阅读详情

作者:no_mIss

用MSSQL时间快一年了,数据量有时会相对比较多,所以经常要优化,也看过很多资料,但大都有一句:IN、NOT IN不用索引,今天发此贴希望能有人参与讨论,到底IN用不用索引,如果用,在什么情况下用索引,在什么情况下不用索引。

前提:
表[Table]
字段[id] INT PRIMARY KEY 聚集索引

以下写法:
SELECT * FROM [Table] WHERE id = 1
肯定用索引对吧。

再看下面的三个写法:
SELECT * FROM [Table] WHERE id = 1 or id = 2
SELECT * FROM [Table] WHERE id IN (1,2)
SELECT * FROM [Table] WHERE id = 1 UNION SELECT * FROM [Table] WHERE id = 2
我可以很负责的告诉你:都用索引。
第二种写法MSSQL会自动优化为:id = 1 or id = 2 ,而不会全表扫描

下面这个写法:
SELECT * FROM [Table] WHERE id NOT IN (1,2)
我也可以很负责的告诉你:用索引。

说到这里,不得不说很多SQL优化的资料都太老了,MSSQL2K以后早改进了。
我们在T_sql时到底靠什么来优化程序呢,我告诉你:
就是参考执行计划和对IO读写中的逻辑读一项
即:
SET STATISTICS IO ON/OFF
SET SHOWPLAN_ALL ON/OFF
。
先写一点,子查询用不用索引,先不写。
请拍砖。。。。。。
 

 

后记:

没有人给我一个定论,于是我暂相信自己如下: 
表[table]
字段[id] PRIMARY KEY
MSSQL2005默认情况下:

以下写法均用索引:

SELECT * FROM [table] WHERE id IN (1,2)

SELECT * FROM [table] WHERE id =1 OR id =2

SELECT * FROM [table] WHERE id NOT IN (1,2)

SELECT * FROM [table] WHERE id = 1
UNION
SELECT * FROM [table] WHERE id = 2

SELECT * FROM [table] WHERE id IN (SELECT ID FROM [table_other] WHERE ...)


只有下面的这条不用索引:
SELECT * FROM [table] WHERE id NOT IN (SELECT ID FROM [table_other] WHERE ...)

C++多线程 task--std::promise和std::future 本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。Task可由如下几部分取得而本文主要讲解std::promise和std::future相关的内容。std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。std::promise提供了如下接 阅读详情

相关推荐

# ubuntu 系统使用 yum命令报错 There are no enabled repos.Run “yum repolist all“ to see the repos you have...

# ubuntu 系统使用 yum命令报错 There are no enabled repos.Run "yum repolist all" to see the repos you have.You can enable repos with yum-config-manager --enable

段子手168的博客 6681

MSSQL exists与not exists; in与not in的区别

1、in和exists    in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的。     如果查询的两个表大小相当,那么用in和exists差别不大;     如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in; --例如:Grade表(

分享我的点点滴滴,在成长路上与你同行! 1569

CentOS7无外网环境下MySQL8.0完整离线部署指南

本文详细介绍了在CentOS7无外网环境下,如何通过MySQL8.0二进制包进行完整离线部署。指南涵盖了从环境准备、依赖安装、用户与目录创建,到数据库初始化、服务配置及远程访问设置的全过程,并提供了关键的避坑技巧,帮助企业运维人员在内网环境中高效、稳定地搭建MySQL数据库服务。

xxx12的博客 1029

MSSQL语句的性能调试(二)使用IN和INNER JOIN

IN在MSSQL语句里是表示在一组数据里寻找。如果那一组数据的量很大,IN的性能就会很差。另外,如果要比较的数据量很多,IN的性能也不是很好。当IN的性能出现问题的时候,而相对的语句能用INNER JOIN来实现,可以尝试一下还提高语句的性能。 原来的SQL语句: SELECT * FROM Invoices WHERE UserId IN (SELECT UserId FROM Us

dogfish的专栏 1161

【即插即用模块】注意力篇 | TGRS 2025 | CDFIM:通道+空间多尺度注意力,双模态特征融合增强,性能翻倍!

C2DFF-Net提出了一种轻量级跨模态特征融合模块CDFIM,通过模态差异感知和多尺度深度滤波增强双模态互补信息。该模块采用通道-空间注意力协同机制,以极低计算成本(仅增加0.26M参数)提升多模态目标检测性能,在三个遥感数据集上平均提升mAP约1.7%。适用于无人机等边缘设备的实时检测任务,为跨模态融合提供高效解决方案。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 624

高匿反爬实战:Python打造无痕爬虫,规避风控系统追踪

网络层匿踪:核心是使用住宅IP代理池,按真实用户IP画像匹配,控制请求频率;协议层匿踪:动态生成请求头(每次都不同),参数添加随机噪声,避免规律化;行为层匿踪:模拟人类的非规律行为(贝塞尔轨迹、随机停顿、非精准点击);设备层匿踪:伪造Canvas/WebGL指纹,禁用webdriver标识,每次请求更换指纹;核心原则:无痕爬虫的本质是“无限接近真实用户”,所有维度都要消除爬虫特征,而非单一维度伪装。打造真正的无痕爬虫需要全维度的匿踪策略,单一维度的伪装极易被高级风控系统识别。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2642

MSSQL之IN多值传参查询

因为MSSQL中的IN查询是多值查询,也许你的一个参数会包含有很多值,但是在MSSQL解析的时候只会当做一个字符串来处理,不是处理多个字符串,IN多值处理其实就是多字符串值的处理。 所以为了能达到想要的IN多值参数化查询,就必须进行动态SQL语句的拼接,因为动态SQL其实就是很多个字符串组成的一个动态SQL语句,只是最后执行的时候的必须是用execute sp_executesql @...

dcf48804的博客 785

120、NPU的Mythic M1076:模拟存算一体NPU

这篇文章分享了作者调试Mythic M1076模拟存算一体NPU的实战经验,主要包含以下要点: 硬件设计陷阱:参考电压输入必须使用低ESR电容,普通贴片电容会导致模拟计算阵列工作异常。 核心技术原理: 采用真正的存算一体架构,将权重存储为模拟电压 使用浮栅晶体管存储权重,通过电流叠加实现乘法运算 包含108个计算单元阵列(Tile),每个256×256规模 使用注意事项: 编程模型特殊,需要依赖SDK自动映射网络层 存在6-8位有效精度限制,需用量化感知训练 功耗特性独特,静态偏置电流占主要功耗 调试手段有

m0_50546716的博客 122

SQL性能优化中,where语句使用 IN 到底走不走索引?

当in所指向的字段带索引时,会自动指向索引,但是当in后面的数据在数据表中的命中率超过30%时,会走全表扫描,即不走索引。当in所指向的字段不带索引时,不会使用索引。

weixin_43167662的博客 2711

在 SAP S/4HANA Cloud Public Edition 中掌控 ABAP 生命周期管理:One-Off、Multi-Off 与 Scalable Delivery 的落地方法论

本文系统梳理了SAP S/4HANA Cloud Public Edition中ABAP扩展开发的三种生命周期管理模式:One-Off适用于企业内部扩展,通过Import Collection在三系统间流转;Multi-Off面向少量客户交付,基于gCTS和Git实现不连接系统间的传输;Scalable Delivery则将扩展产品化为add-on,支持规模化分发。文章结合RAP、OData等实际开发场景,对比分析了各模式的特点与适用边界,为国内团队提供了符合Public Cloud要求的开发与交付实践建议

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1495

YOLOv8安防监控实战:跌倒/闯入/徘徊实时检测(附TensorRT加速+声光报警部署代码)

精准性:针对跌倒/闯入/徘徊的行为特征优化,准确率达89.3%,误报率低于5次/天;实时性:TensorRT加速到50+FPS,报警延迟<1秒,满足安防“黄金响应时间”;低成本:无需专用AI芯片,RTX 3060或Jetson Orin就能跑,硬件成本比传统方案低60%;易部署:代码全开源,提供从模型训练到硬件联动的完整流程,2天即可搭起原型系统。如果你的安防监控还在“漏报误报”“响应慢”,建议先从跌倒检测的姿态过滤改起——用100张样本测试,再集成TensorRT加速,90%能看到明显改善。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 679

MSSQL中IN是否用索引.....[转]

作者:no_mIss用MSSQL时间快一年了,数据量有时会相对比较多,所以经常要优化,也看过很多资料,但大都有一句:IN、NOT IN不用索引,今天发此贴希望能有人参与讨论,到底IN用不用索引,如果用,在什么情况下用索引,在什么情况下不用索引。前提:表[Table]字段[id] INT PRIMARY KEY 聚集索引以下写法:SELECT * FROM [Table] WHERE id...

220

西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告

将电位器Rp调至中心位置,用双综示波器观察并绘制方波U0的波形,测量其幅值和频率;将电位器RP调至中心位置,用示波器观察并绘制锯齿波U0的波形,记录;示波器基线调零,Ui输入1000HZ、幅值为2V的正弦信号,观察并记录Ui与U0波形,读出图中波形跳变时的Ui临界值;用万用表电位器RP调至预测结果位置,用示波器观察并描绘三角波输出U0及方波输出uo’,测其幅值、频率及Rp值,记录之。示波器基线调零,U输入1000HZ、幅值为2V的正弦信号,观察UI与U0波形。理论算法公式:当Ui

Welcome To My6n Blog 3936

SQL Server 索引重建或索引重組

查询索引的碎裂状态T-SQL语法(适用于SQL Server 2005以上): SELECT OBJECT_NAME(dt.object_id) , si.name , dt.avg_fragmentation_in_percent, dt.avg_page_space_...

weixin_33766168的博客 177

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SQLSERVER2008R2正确使用索引

T1表10000000万条数据,(插入时间36分钟,count(*)查询19秒,空间占用670M左右) 1.真正充分的利用索引比如like'张%'就是符合SARG(符合扫描参数)标准而like'%张'就不符合该标准 通配符%在字符串首字符的使用会导致索引无法使用,虽然实际应用中很难避免这样用,但还是应该对这种现象有所了解,至少知道此种用法性能是很低下的。 **...

dengchi5635的博客 143

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

in 用不用索引_SQL中in 和 exists的区别

如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了 ,另外IN时不对N...

weixin_39591386的博客 309

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SQLServer索引

SQLServer索引,SQlServer执行计划

weixin_43159131的博客 4098

SQLServer索引全解

索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间

weixin_43295327的博客 3731

SQLserver 索引概念与应用

一、索引的概念 SQL 调优中有一则公式:T = S / V 其中 T 就是查询过程中所需要的时间,S 就是查询过程中所需要消耗的资源,而 V 则表示单位时间内资源的利用率,想要提升一条 SQL 的执行效率我们就可以从减少 S 增加 V 来考虑,设计数据库的大佬们就选择了 B tree 结构来作为底层的索引算法,如果能够让数据库正确索引,则会减少很多次 IO 操作也就是减少了 S 资源的消耗。 MSSQL 的索引类型: 按照存储结构区分:聚簇索引、二级索引; 按照唯一性区分:唯一索引、非唯一索引.

分享既学习 578

MSSQL优化之————探索MSSQL执行计划

MSSQL优化之————探索MSSQL执行计划 作者:no_mIss  QQ:34813284时间:2006.11.07 23:30:00环境:win2003 + mssql2005  最近总想整理下对MSSQL的一些理解与感悟,却一直没有心思和时间写,晚上无事便写了一篇探索MSSQL执行计划,本文讲执行计划但不仅限于讲执行计划。 网上的SQL优化的文章实在是很多,说实

no_mIss的专栏 1万+

SQLSERVER索引

SQLsever索引 一、什么是索引 当前使用大白话(自己的理解)索引:对表的每一行以索引列为标准进行一个排序,分组,并抽离出元数据的。从而到达提高查询效率。 二、索引的分类 三、索引与主键 四、哪些地方可以用索引 ...

pwd 2150

sqlserver索引

文章目录前言一、索引的优点与缺点优点缺点二、聚集索引和非聚集索引聚集索引举个栗子非聚集索引举个栗子三、两种索引如何选择sqlserver如何创建两种索引 前言 一、索引的优点与缺点 优点 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以

技术分享博客 6520

sqlserver怎么查看索引_基于SQLSERVER数据库建立高效的索引

概述生产库中sqlserver怎么也占了三分之一,所以今天主要聊聊怎么在sqlserver数据库上去建索引。1、索引概述创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略。大型数据库有两种索引即簇索引和非簇索引:1)非簇索引的表是按堆结构存储数据,所有的数据均添加在表的尾部;2)簇索引的表,其数据在物理上会按照簇索引键的顺序存储,一个表只允许有一个簇索引。因此,根据B树结...

weixin_39802020的博客 1617

sqlserver索引(Index)

在 SQL Server 中,聚集索引(Clustered Index)和非聚集索引(Non-clustered Index)是两种不同类型的索引,它们在实现方式和功能上有一些重要的区别。聚集索引是按照索引键的顺序重新组织表的方式存储数据的索引。换句话说,表的数据行按照聚集索引的顺序进行排序,并且叶子节点包含了整个行的数据。每个表只能有一个聚集索引,因为数据行只能以一种方式进行排序。如果创建聚集索引,表的数据实际上是按照索引的顺序进行存储的。

qq_41942413的博客 3710

SQLserver 查看索引碎片

本文引自DBCC DBREINDEX重建索引提高SQL Server性能 查看碎片情况使用 dbcc showcontig 函数来进行 代码: --改成当前库 use DB_Name --创建变量 指定要查看的表 declare @table_id int set @table_id=object_id('TableName') --执行 dbcc showcontig(@table_...

羽之大公公的博客 1754

关于MSSQL中的索引

MSSQL 中索引用的是B+树 这种数据结构 以内存为存储介质的数据结构中 红黑树是一种 对 查找插入删除 都有一定要求的 比较理想的数据结构 在以磁盘作为存储介质时 由于磁盘读取的特性,机械头需定位磁道,物理读取比内存读取慢了几百倍,所以为了减少物理读取某些大牛改进出了B+树这样的数据结构 MSSQL 中 B+ 树 的深度 大多在 3-4 层 之间 因此 查找某个元素的时候...

weixin_34117522的博客 352
上一篇: ASP中汉字与UTF-8的互相转换
下一篇: 一次渗透的具体过程
no_mIss
博客等级 码龄21年 9粉丝 66原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值