SQL 查询方式中 大批量数据查询字段效率

![图片只有三个,如果可能的话请尽量列举更多,或者扩展其他方面的查询性能和优化 方面的知识图片说明
问题内容:
电话号码表t_phonebook中有一千万条数据,其中号码字段phone上创建唯一索引,
且电话号码全都有数字组成,要求统计号码为321的电话号码数量,
下面算法执行速度最快的是——————,最慢的是——————
A:SELECT count(*) FROM t_phone WHERE phoneno>='321',AND phoneno< '321A'
B:SELECT count(*) FROM t_phone WHERE phoneno LIKE '321%'
C: SELECT count(*) FROM t_phone WHERE phoneno substr(phoneno,1,3)='321'
D:都一样快**_

5个回答

首先差别不大,读取大量数据将占用主要的时间,比较三个字母占用时间比例很小;就3种方式来说,A会比较第4个,B仅仅比较前3个,C还需要取出子串,所以,B最快

sky__walk
sky__walk 前提是要这个字段有建立索引,LIKE '321%' 索引是有执行的所以B最快
一年多之前 回复

最快的应该是C,最慢的是模糊查找的B

建立索引,或者条件查询,建议看一些SQL优化的书

实在不行就尝试着建立索引呗,如果还不行我也没辙了。

不看题目的话 大批量筛选可以把能够筛选出更多数据的条件放前面

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SQL 查询方式中 大批量数据查询字段效率
![图片只有三个,如果可能的话请尽量列举更多,或者扩展其他方面的查询性能和优化 方面的知识图片说明rn问题内容:rn电话号码表t_phonebook中有一千万条数据,其中号码字段phone上创建唯一索引,rn且电话号码全都有数字组成,要求统计号码为321的电话号码数量,rn下面算法执行速度最快的是——————,最慢的是——————rnA:SELECT count(*) FROM t_phone WHERE phoneno>='321',AND phoneno< '321A'rnB:SELECT count(*) FROM t_phone WHERE phoneno LIKE '321%'rnC: SELECT count(*) FROM t_phone WHERE phoneno substr(phoneno,1,3)='321'rnD:都一样快**_
SQL大批量数据查询问题?
如果从数据库中按条件提取20万条记录,当取到第10万条的时候超时了或因其它原因不能继续进行下去了,那么返回的记录集是什么样的?可不可能为空?
大批量数据查询SQL优化问题
select t1.m,t1.nrnfrom t1,t2rnwhere t1.a=t2.a(两表在a上均有索引)rn and (t2.c=p_code or p_code is null)(c字段上上有索引)rn 。。。。rnrnt1表大概有几百万条数据,t2表几十万条数据,这个sql是过程中其中一个最慢的,p_code是个参数,如果不为空则按t2.c=p_code 查询,请大家看看哈,我应该向什么方向优化,先看哪些方面?rnt2表虽然走了在a字段上的索引,但因表的行排序跟这个索引不同,所以i/o等待时间比较长
大批量数据查询
我有六张表要关联,查询的时候很慢,请问有什么高见
大批量数据查询卡死情况?
最近发现一个情况,当有人拉报表或查询大批量数据时,其他用户使用就会很卡。rn这种情况各位大佬你们是怎么解决的?让我也学习学习。
大批量数据查询的优化问题?
我用的是sqlserver2000 ,在一个数据库表中有好几百万数据,查询数据的时候好慢,有什么办法优化一下吗??我建Index的效果也不是很明显!!你们有什么好的建议吗
这样的大批量数据查询怎么实现
[color=#FF0000]数据库mysql,版本6.0[/color]rnrnCREATE TABLE `contacts` (rn `id` int(11) NOT NULL AUTO_INCREMENT,rn `lists_id` int(11) DEFAULT '0' COMMENT '列表ID',rn `name` varchar(255) DEFAULT '' COMMENT '姓名',rn `mobile` varchar(50) DEFAULT '' COMMENT '手机',rn `phone` varchar(50) DEFAULT '' COMMENT '电话号码',rn PRIMARY KEY (`id`)rn) ENGINE=MyISAM AUTO_INCREMENT=50167 DEFAULT CHARSET=utf8 COMMENT='联系人';rnrnrnINSERT INTO `contacts` VALUES ('1', '1', '客户1', '13511111111', '80001111' );rnINSERT INTO `contacts` VALUES ('2', '2', '客户2', '13511111111', '80022222' );rnINSERT INTO `contacts` VALUES ('3', '1', '客户3', '13511111113', '80001113' );rnINSERT INTO `contacts` VALUES ('4', '1', '客户4', '13511111114', '80001114' );rnINSERT INTO `contacts` VALUES ('5', '2', '客户5', '13511111115', '80001113' );rn............rnrn[color=#FF0000]要注意的是,表里同一个lists_id的数据会有几万条[/color]rn1、现在要得到lists_id=1的数据,但如果其中的mobile值在lists_id=2的mobile中有相同的,则不能放入数据集中rn即得到rnid lists_id name mobile phonern3 1 客户3 13511111113 80011113rn4 1 客户4 13511111114 80011114rnrn2、再复杂点,同样得到lists_id=1的数据,但如果其中的mobile值在lists_id=2的mobile中有相同的,或者phone值在lists_id=2的phone中有相同的,不能放入数据集中,即得到rnid lists_id name mobile phonern4 1 客户4 13511111114 80011114rnrnrn3、还更复杂的是rnCREATE TABLE `customers_group` (rn `group_id` int(11) DEFAULT NULL COMMENT '组ID',rn `customers_id` int(11) DEFAULT NULL COMMENT '客户ID,关联customers表id'rn) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='联系人组关系';rnrnINSERT INTO `customers_group` VALUES ('1', '1');rnINSERT INTO `customers_group` VALUES ('1', '2');rnINSERT INTO `customers_group` VALUES ('2', '2');rnrnCREATE TABLE `customers` (rn `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',rn `name` varchar(50) DEFAULT NULL COMMENT '联系人姓名',rn `company` varchar(100) DEFAULT NULL COMMENT '公司名',rn `mobile` varchar(20) DEFAULT NULL COMMENT '手机号',rn `phone` varchar(20) DEFAULT NULL COMMENT '电话',rn PRIMARY KEY (`id`)rn) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='通讯录联系人';rnrnINSERT INTO `customers` VALUES ('1', '张三', '公司1', '13511111114', '80001116');rnINSERT INTO `customers` VALUES ('2', '立四', '公司2', '13511111117', '80001117' );rnrn[color=#FF0000]要注意的是,customers里属于同一个group的数据会有几万条[/color]rn同样得到contacts表lists_id=1的数据,但除了做上述2的数据过滤外,还再考虑过滤customers中的数据。过滤掉customers_group中group_id为1关联customers的数据,过滤方法同。rn过滤后,则一个数据都没有rnid lists_id name mobile phonernrnrn谢谢rnrn
大批量数据查询后的问题,求助!
以前一个项目里面把图片文件存入了数据库rn大约了4W条数据,15G左右rnrn在新项目中我把这些图片文件都导出至本地rn用C#导出,每次导50条,循环了几百次rn现在文件全部都导出来了rnrn可当我再次访问这个表的时候报错rn[color=#FF0000]在从服务器接收结果时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 指定的网络名不再可用。)[/color]rn这个数据库中的其他表都一切正常,唯独访问这张表报错了。rnrn除了修改连接字符串,有没有其他解决的办法?rnrn谢谢!
提高SQL查询的效率
单体式架构和分布式架构有什么区别? 单体式架构优点: 1.开发,测试简单 2.部署简单 3.扩容简单,只要给应用加机器就行 缺点: 1.编译慢,启动慢,代码冲突等各种问题,严重影响开发效率; 2.性能扩展有局限性,一定规模后,单纯堆机器已经很难扩展性能了; 3.随着业务复杂度的提高,代码的可维护性、扩展性和可读性在降低; 4.维护系统的成本、修改系统的成本在提高。 分布式: 业务复杂度较高的情况下...
Sql效率查询
直接运行函数,可以查看数据库中哪些sql比较占用资源
sql select 查询方式 in,exites,or 之间的查询时间效率
1. or 的查询方式(拼接了1300多个查询条件用时在:0.088ms~0.091ms 的速度 理想中还是可以的 拼接2600个查询:0.260MS 呀) SELECT DISTINCT NOTICE_ID,COUNT(NOTICE_ID) AS COUNTS FROM ES_NOTICE_TARGET WHERE (NOTICE_ID ='1905071106171557198...
SQL查询数据查询异常总结
这里面会不断的更新我在原生SQL语句的时候发现的问题异常总结:    (1)大小写问题:      比如你的创建表的时候语句如下:   db.execSQL("create table if not exists Person(_id Integer PRIMARY KEY AUTOINCREMENT,NAME varchar(32),AGE varchar(32))");你的插入语
数据查询方式
Hibernate提供的面向对象查询方式,通过正确配置关系,指定查询条件,就可以轻松得到数据,避免冗长sql代码。Hibernate支持的数据查询方式包括:SQL,HQL,QBC SQL,通过标准的SQL语句,定义数据查询请求,并通过Hibernate的SQL Query接口传递给数据库,执行SQL查询的步骤: 定义SQL查询指令字符串 创建SQL Query接口对象并传递指
oracle 数据查询,效率问题
问,把多条件,多表连接查询 转换为 嵌套查询, 哪个效率更高。rn还有,哪位高手对写查询语句的效率方面,有经验之谈啊,请指教.rn非常感谢.!
大批量导入数据到SQL Server中log文件太大,效率低
看了相关资料,SQL Server在导入数时就是要生成log的,rn我使用Bulk Insert一次导入的记录数量超过20万,rn那么导入时的log文件就超过500M,rn首先,是低效!rn其次,本场合不需要log!rn 数据是程序生成的,计算程序一定是在与数据库在一起(物理位置),连接保证率高,数据完整性有保证,没有rollback的需要rnrn请教各位大侠,rn有没有提升效能的措施?rn或者这样的场合就不适合应用SQL Server?而应该使用其它数据库产品,如MySQL?
数据查询的效率问题
在数据查询中,我需要对数据进行转换(code转换为name)rnrn我用过三种方法:rn1、在查询语句中使用Dcode。(类型很少时才用的上);rn2、在查询语句中使用列关联查询 (Select a.Name From XXX a Where a.id_Code = YYY.id_code) NAME;rn3、在数据库中写转换函数,在查询语句中使用函数;rnrn作为软件的维护和一致,使用方法3是最好的,可没想到效率跟前两种相比,简直不在同一个数量级上!相差可能几十倍!rn(有一点更让我奇怪:使用关联查询转换某列居然跟不转换对应列的效率相差不多)rn不知为何如此?rnrn请问大虾们是如何处理此类转换的?
大批量数据操纵时的效率问题
公司现在有个项目要做,涉及到一个数据处理问题rn有一个商品表,表里边有上百万条商品记录rn另外有一个代理商表,里边也有很多条代理商信息,而且分为一级代理/二级代理等等rnrn现在要求另外建一张商品流向表,作用是记录每件商品从哪个代理商流动到另外一个代理商,要能正向查询商品流向,还能反向查询商品来源。rnrn现在的问题是由于商品很多,代理商也很多,所以这个表的数据量非常大,在每次查询的时候都会消耗很多资源,很多时间。rn我想请教的问题不是如何进行大批量数据操作,而是在很多代理商同时查询这个表的时候如何解决效率问题,这个表使用的频率还比较高,在很多人同时查询的时候必然会拖慢整个系统的速度,请教各位大侠如何来解决这个问题?rnrn我已经向主管提出了 SQL SERVER 2005 数据分区建议,可是主管告诉我说:现在的问题不是如何进行大批量数据处理的问题,而是处理时的效率问题。rnrn还请大家给点高见吧!
sql查询字段中的换行符
开发过程中,有时候发现有些数据使用看似对的查询条件,死活就是查不出来,上网查阅了下,有可能是因为之前保存数据是存入了脏数据进去比如换行符
第三章 DQL 数据查询---10种查询方式
1.查询语言:(以当前表名为emp为例) (1)简单查询 查询所有的列//create  *  from  表名; mysql&amp;gt; select * from emp; +----+----------+--------+------------+----------+------------+----------+ | id | name | gender | birthda...
数据库——SQL 中(数据查询)
目录 一、单表查询 1.1选择表中的若干列 1.1.1查询指定列 1.1.2查询全部列 1.1.3查询经过计算的值 1.1.4使用列别名改变查询结果的列标题 1.1.5更名运算 1.2选择表中的若干元组 1.2.1消除取值重复的行 1.2.2查询满足条件的元组 1.3 ORDER BY子句 1.4聚集函数 1.5 GROUP BY子句 二、多表查询 2.1等值连接与自...
大批量CSV文本文件入库,哪种方式效率比较高???
大批量CSV文件导入SQL数据库,哪种效率最快???我的数据量可能会有几十万行或者更多.结合您的经验,以下三种方法或者其他方法.哪种最高效???rnrn1.读取CSV文件,自己解析然后利用SQL insert插入rn2.利用ADO的AddNew()/UpdateBatch(),不过也要首先读取CSV解析rn3.insert into mytable select * from opendatasource(...)...[myfile#CSV]rnrn我已经测试了方法3,导入14万行数据大概费时3~5分钟.rnrn谢谢楼下Xd的帮忙...
hibernate 对大批量查询
hibernate 对大批量查询 时 ,如果想采用临时表,该怎么做?或者有其它好的解决方案?谢谢rn
大批量数据的查询问题
最近在做个项目,rn数据量大约在几百万条以上,rn要根据不同的条件计算出相应的统计数目(如:count(*)),rn数据库用的informix ,rn现在小弟的做法是:rnrnsum(case when ········· then 1 else 0 end) 来做统计的,rnrn要统计好几种条件,rn按照现在的方法查寻的速度真的是太可怕了,我都要睡着了,rn请各位高手多多帮助啊,rn小弟不胜感激。
elasticsearch 大批量的文档查询
在日志系统中有时为了数据分析,可能需要提取上百万的数据出来分析,但是elasticsearch 默认只支持10000条数据的提取,超过一万就会错误,如下:{ &quot;type&quot;: &quot;query_phase_execution_exception&quot;, &quot;reason&quot;: &quot;Result window is too large, from + size must be les...
查询mssql大批量数据
数据库内有500W条数据,查询的时候如何优化
sql:分组统计时的查询及效率
一张user表 里面有id、国籍、出生日期等字段 现在要统计各个国家成年的人有多少、未成年的人有多少 结果如下图所示  第一种写法: SELECT    gjname, (select count(0) from criminal_base_info where gjname=baseInfo.gjname and TRUNC(months_between(sysdate,cs
关系SQL查询的效率问题?
select * from orders where 1=1 and orderid > 2000 rnselect * from orders where orderid > 2000 and 1=1rnrn在SQLServer分析器中,两条语句的效率一样!rnselect * from orders where 1=2 or orderid > 2000 rnselect * from orders where orderid > 2000 or 1=2rn也是一样
Hibernate查询方式(SQL查询)
本门课程是目前唯一的讲解基于annotation配置方式的hibernate4的视频。目前市面上所有讲解hibernate的视频都是基于xml配置的,本视频不仅详细的讲解了xml的配置方式,更把重点放到了目前流行的annotation的配置方式。
sql查询匹配字符串效率
现在有一个表的table1,结构如下rnColumnA ColumnB ColumnC ColumnDrna+b+x+c a b xrnrna/b/c/x表示字符串rnrn另外一个表table2中的一列,例如为ColumnE,值为table1的ColumnB + ColumnC rnrn两个表做关联,下面那个效率高些rn[code=SQL]rn--onern select ColumnA from table1rn left join table2rn on left(ColumnA,20)=ColumnE rn--twornselect ColumnA from table1rn left join table2rn on ColumnB + ColumnC =ColumnE rn[/code]
简单的SQL查询的效率比较
比如有一个用户表rnID,Namern从中查询出ID不等于10的记录rnrn如:select ID,Name from A where ID<>10rn用什么方法数据库的执行效率达到最优化?
sql查询更新的效率问题
表ciku (这里有汉字词五百多万条,汉字数2-10不等)rn想实现更新rn[code=SQL]rnupdate ciku set hz_pinyin = dbo.f_gettotalpy(hz_hanzi) rn[/code]rnrn----函数 ,其中表zd是汉字库,有每个单个汉字与 对应的拼音 不考虑多音字-----rnrn[code=SQL]rnSET QUOTED_IDENTIFIER ON rnGOrnSET ANSI_NULLS ON rnGOrnrnrnrnALTER function f_gettotalpy(@str varchar(100)) rn returns varchar(800) rn as rn begin rn declare @re varchar(800) rn rn declare @i int,@ilen int,@splitchr varchar(1) rn select @splitchr='' --两个拼音之间的分隔符(目的是为了通用性考虑) rn ,@i=1,@ilen=len(@str) rn rn select @re=pinyin from zd where hanzi=substring(@str,@i,1) rn while @i<@ilen rn begin rn set @i=@i+1 rn select top 1 @re=@re+@splitchr+pinyin rn from zd2 where hanzi=substring(@str,@i,1) rn end rn rn return(@re) rn end rn rnrnrn[/code]rnrn我用 update ciku set hz_pinyin = dbo.f_gettotalpy(hz_hanzi) where hz_len=2 and hz_pinyin is null and hz_id<1000000 更新100万条数据20分钟了还没好。 这还是只更新2个汉字长度的。rnrn问下如何提高下效率。
大量数据查询时的效率问题!
表1: T1rnnum(int) c1(nvarchar) c2(nvarchar) rn 1 数据1 数据2rn 2 数据3 数据4rnrn其中num在T1中是主键rn表2: T2rnnum(int) cc(nvarchar) vv(nvarchar) rn 1 数据5 数据6rn 1 数据7 数据8 rn 2 数据9 数据10rn 2 数据11 数据12 rnrn在对于两个表做如下查询的时候rn查询1:rnselect * from T1 rnwhere (c1 like '%查找%') or (c2 like '%查找%')rnor num in (select num from T2 where vv like '%查找%') rnrn查询2:rnselect * from T1 where (c1 like '%查找%') or (c2 like '%查找%') rnrnselect * from T1 rnwhere num in (select num from T2 where vv like '%查找%') rn查询1:直接生成的DataTablern查询2:生成的两个DataTable经过合并去掉重复的记录生成的DataTable,那个效率高一点 rnrn大部分的朋友认为查询1比较快,但是在100万条数据的查询时在查询分析器中需要6秒,存储过程中要3秒,要是可以的话能不能有改进的方法使查询速度再提高一点!rn还有一点很奇怪,同样的数据库我在查询分析器中分别执行查询2的两个语句时都是用了1秒。这是为什么?难道查询2的效率反而高吗?
数据查询,求效率更高的方法。
主表:arnid name did(部门id)rn101 test1 1rn102 test2 2rn103 test3 1rnrn附表:b (a表id每个月都有一条数据)rnaid date month valuern101 2011-1-1 1 111rn101 2011-2-1 2 222rn102 2011-1-1 1 1212rn102 2011-2-1 2 2121rn103 2011-1-1 1 1313rn103 2011-2-1 2 2323rnrn我现在要查询所有部门id为1的数据,并且时间范围从2011年1月到2011年5月,但是现在库里只有1月和2月的数据,所以我查询出来的结果也是只有1月和2月的数据,但是我想要的结果是,1-5月的数据都有,如果该月的数据在数据库中没有用空或0代替,如下:rn101 test1 2011-1-1 1 111rn101 test1 2011-2-1 2 222rn101 test1 2011-3-1 3 0rn101 test1 2011-4-1 4 0 rn101 test1 2011-5-1 5 0rn103 test3 2011-1-1 1 1313rn103 test3 2011-2-1 2 2323rn103 test3 2011-3-1 3 0rn103 test3 2011-4-1 4 0 rn103 test3 2011-5-1 5 0rnrn我目前想到的方法是,用时间来循环,一个个查,但是貌似这样相率不高,so~ 求方法更好、效率更高的写法,还请各位帮忙!rn rn我写的是存储过程,
SQL查询not in,或是同一字段多个!=效率超低,怎样优化??
在一个只有1330条记录的表A中有个字段comname,对comname不等于“广州”,“深圳”,“珠海”,“中山”等条件进行筛选数据,使用!=、and进行筛选查询时效率如下: rn rnselect * from A where comname !='广州';结果:1191条,用时:0.563秒。rnrnselect * from A where comname !='广州' and A.comname !='深圳';结果:1080条,用时:0.516秒。rnrnselect * from A where comname !='广州' and A.comname !='深圳' and A.comname !='珠海';结果:1006条,用:13.065秒。 -_-!!!rnrnselect * from A where comname !='广州' and A.comname !='深圳' and A.comname !='珠海' and A.comname !='中山';结果:974条,用时:25.128秒。 -_-!!!rnrn使用not in 进行筛选时和上面大致相同:rnrnselect * from A where comname not in ('广州');结果:1191条,用时:0.596秒。rnrnselect * from A where comname not in ('广州','深圳');结果:1080条,用时:0.547秒。rnrnselect * from A where comname not in ('广州','深圳','珠海');结果:1006条,用时:13.844秒。 -_-!!!rnrnselect * from A where comname not in ('广州','深圳','珠海','中山');结果:974条,用时:26.145秒。 -_-!!!rnrnrn同一字段不等于筛选超过2个时,效率明显超低,而且个数越多用时越多。上面的结果都是多次测试,大致用时如上。rn请教老鸟们是否遇到同样问题,[b][color=#FF0000]为什么会这样,怎样去优化?[/color][/b]rnPS:数据库为oracle 10g。使用工具pl/sql。rnrnrnrnrnrn
SQL查询方式
**技术分析之SQL查询方式** 1. 基本语法 Session session = HibernateUtils.getCurrentSession(); Transaction tr = session.beginTransaction(); SQLQuery sqlQuery = session.createSQLQuery("select * from cst_linkma
sql字段唯一查询
表结构如下rnID    ZiMu   Shuzirn1    A     1rn2    B     1rn3    C     1rn4    A     2rn5    B     2rn6    C     2rn7    A     3rn8    B     3rn9    C     3rnrn要求查询到以下结果rnrnID    ZiMu   Shuzirn1    A     1rn4    A     2rn7    A     3rn
SQL的同一字段查询.
数据源rn字段为mm1rnAddRegionrnAlongPathrnAlongPathrnAlongPathrn@"AddRegion","Rotate3D"rn现在查询的方法是rnselect * from table where mm1 like '%AddRegion%'rn查询结果为两条记录rnAddRegionrn@"AddRegion","Rotate3D"rn目标需求rn记录包含"@"和"AddRegion"的记录.rn查询结果为rn@"AddRegion","Rotate3D"rn而rnAddRegion记录不要
Sql 查询字段枚举
因为在SSM 框架中 一些SQL语句用的十分多,就会把这些sqlID的字段定义成枚举值public interface SqlId { public String SQL_SELECT_COUNT = &quot;selectCount&quot;; public String SQL_SELECT = &quot;select&quot;; public String SQL_SELECT_BY_ID = &quot;sele...
SQL查询重复字段
1.找出20171130号的new_name数,重复的不重复计算 select min(nse.new_name) from new_services ns WITH (NOLOCK) inner join new_servicesExtensionBase  nse  WITH (NOLOCK) on ns.new_servicesId = nse.new_servicesId inne
sql 查询 第二列 字段
不是用列名:select bbb from TableNamern而是用数字:select 3 from TableNamernrn不用列名,用数字指定,要查询第3列,怎么查询?rnrn表字段结构如下:rnID aaa bbb cccrnrn
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数