sql中带in条件的查询及提高效率

简介:
ALTER   PROCEDURE   [ dbo ] . [ example1 ]  

@booker   varchar ( 100

AS  
declare   @str   varchar ( 1000 )  
set   @str = ' select * from tb_itregister where booker in( '   +   @booker   +   ' ) '  
execute  ( @str

调用: 
string booker 
=  "a,b"; 
        booker 
=  booker. Replace (",", " ' , ' "); 
        booker 
=  " ' " + booker + " ' "; 



 

/************************************************************
     问题描述: id值可能有数千个之多,怎么提高效率?
     例子:select * from table1 where id in (1,3,6,10,...,8000) and type = 1
 ***********************************************************
*/

 
--例如:
    SELECT *
    
FROM   tb
    
WHERE  id IN (1234, ........)
           
AND NAME = 'best'    
     
 
--1.将括号的条件做成变量
    DECLARE @str VARCHAR(4000
    
SET @str = '1,2,3,4,5.......'
     
 
--2.然后将@s拆分后插入临时表
    CREATE TABLE #t
    (
        id 
VARCHAR(10)
    ) 
    
DECLARE @i    INT 
    
DECLARE @len  INT 
    
SET @i = 1 
    
WHILE @i < LEN(@str + ',')
    
BEGIN
        
INSERT #t
        
SELECT SUBSTRING(@str + ','@iCHARINDEX(','@str + ','@i-@i)
        
        
SET @i = CHARINDEX(','@str + ','@i+ 1
    
END 

 --3利用临时表和原表进行连接取值
    SELECT k.* 
    
FROM   tb k
           
INNER JOIN #t p
                
ON  p.id = k.id
    
WHERE  NAME = 'best'   
       

 

     本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/01/03/1638152.html,如需转载请自行联系原作者

 



相关文章
|
存储 监控 安全
数据访问权限如何通过角色管理实现?
【6月更文挑战第24天】数据访问权限如何通过角色管理实现?
327 9
|
存储 NoSQL 中间件
单点登录的原理、实现、以及技术方案比较详解
本文详细介绍单点登录(SSO)的定义、原理、实现细节,探讨其在大型网站中的应用,帮助读者理解如何通过分布式Session实现高效的用户认证与授权。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
单点登录的原理、实现、以及技术方案比较详解
|
Java
java小知识—进程和线程
进程 进程是程序的一次执行过程,是系统运行的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。 线程 线程,与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间做切换工作时,负担要比
164 1
|
5天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
307 116
|
20天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
504 45
Meta SAM3开源:让图像分割,听懂你的话
|
14天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
695 222