㈠ sql查询时,语句的查询条件越多查询的越慢吗
这个不一定,需要看实际情况
比如 索引,比如 数据量。
通常来说,限定的条件越多,数据量越小,自然越快,效率越高
另:
如果2个结果的 数据量 完全一致, 那么效率应该差不多, 在特殊情况下 条件多的会差一些
㈡ sql查询效率
我想是这样的,IN后面的子查询数据越多,相对EXISTS查询就会越慢。IN子查询中的记录只有几十条件,那么应该是效率很高的,因为其只查询单个字段,如果这个字段是被索引过的,会更快
EXISTS相对于查询子表数据较多的情况。
可以这样想,EXISTS每个子查询是一条记录。而IN子查询每个子查询会是多条甚至数万条记录。所以,子查询记录越多,IN的速度越慢。
但是,EXSITS是能完成IN查询不能完成的功能的,可以使用更复杂的逻辑表达式进行查询,可以与子查询的多字段进行比较。
结论:
子表或查询数据记录较多时,EXISTS会较快,子表数据较少时,使用IN查询较快。
㈢ SQL连表查询跟一个个表查询那个快各有什么优点和缺点
SQL链接表查询称为联合查询,表查询是单个查询。其区别和优点如下:
1.从发展效率的角度看:
联合查询是需要多个单查询逻辑组合才能完成的查询工作,联合查询只需要一个SQL就可以完成查询工作,即将业务逻辑转化为SQL,由数据库来处理,相对来说,开发效率会更高。
2.从查询效率来看:
单个查询具有更好的可重用性,因此比联合查询更有效。
当读取或写入数据库时,数据库使用锁机制来限制其他连接对其进行操作。由于联邦查询比单个查询慢得多,它们会增加锁争用,因此单个查询更好。
3.从逻辑结构层面来看,分层原则
关联表示业务规则/逻辑。如果经常使用关联查询,就会将大量的业务规则和逻辑放入数据库中执行,这将大大增加CPU、内存、IO等资源的消耗。
4.从资源利用的角度来看
在大多数情况下,并不是所有相关查询的结果都得到了有效的使用。例如,后台管理的列表界面会显示分页、关联查询的结果集,只使用当前页面的数据,而数据库需要消耗额外的资源才能得到整个结果集。
5.从架构的可伸缩性的角度来看
大量的相关查询将导致集中式数据库体系结构难以转化为分布式体系结构,可扩展性优化也难以实现。关联查询方便快捷,开发效率更高。
不使用关系查询在体系结构级别上有很多优势,但是它需要大量的系统分析、设计和开发功能。一般在互联网行业,如用户数量最好重视这方面。
由于数据量小,两个查询的效率基本没有差别,但在实际应用中,需要根据数据量、业务复杂度等进行综合评价。
㈣ sql对100万条数据的查询和统计(主要是统计)效率提升
SELECT count(id)
FROM TBL_POS_SHOP s,
TBL_POS_POS p,
TBL_POS_CUSTOMER c,
TBL_POS_ORDER o,
TBL_POS_CARDINFO cd
WHERE o.POS_CATI = p.POS_CATI
and o.CUSTOMER_ID = c.ID
and o.SHOP_ID = s.ID
and o.CARDINFO_ID = cd.ID
㈤ mysql数据库: 为什么sql语句在查询分析中的执行速度远远快于在应用程序的(而且有时候后者慢的很多)
查询分析的执行速度快于应用程序,主要原因在于应用程序查询的时候,需要调用对应的数据库接口驱动程序,如odbc,jdbc等,使得应用程序能够与数据库本身能够交互,这一块一般无法进行优化,可以优化的地方一般是在建立数据库的时候,数据库的逻辑结构和物理结构的优劣直接影响一个系统的性能如何。
㈥ SQL查询速度 Select Count(1)
如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null。
如:
ID DD
1 e
2 null
select count(*) from table --结果是2
select count(DD) from table ---结果是1
有说count(1)效率高,感觉差不多,没啥区别。
一、关于count的一些谣言:
1、count(*)比count(val)更慢!项目组必须用count(val),不准用count(*),谁用扣谁钱!
2、count(*)用不到索引,count(val)才能用到。
3、count(*)是统计出全表的记录,是吞吐量的操作,肯定用不到索引。
4、count(1)比count(*)的速度快。
二、验证count(*)和count(val)
1、首先创建一个表,使用count(*)和count(val)查询比较:
----删除echo表----
SQL> drop table echo purge;
drop table echo purge
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
----创建一张echo的测试表----
SQL> create table echo as select * from dba_objects;
表已创建。
SQL> update echo set object_id = rownum;
已更新72509行。
SQL> commit;
提交完成。
SQL> set timing on
SQL> set linesize 100
SQL> set autotrace on
SQL> select count(*) from echo;
COUNT(*)
----------
72509
已用时间: 00: 00: 00.01
执行计划
----------------------------------------------------------
Plan hash value: 99109176
-------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 290 (1)| 00:00:04 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| ECHO | 80064 | 290 (1)| 00:00:04 |
-------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement (level=2)
统计信息
----------------------------------------------------------
4 recursive calls
0 db block gets
1265 consistent gets
0 physical reads
11060 redo size
425 bytes sent via SQL*Net to client
415 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> select count(*) from echo;
COUNT(*)
----------
72509
已用时间: 00: 00: 00.01
执行计划
----------------------------------------------------------
Plan hash value: 99109176
-------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 290 (1)| 00:00:04 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| ECHO | 80064 | 290 (1)| 00:00:04 |
-------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement (level=2)
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
1038 consistent gets
0 physical reads
0 redo size
425 bytes sent via SQL*Net to client
415 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> select count(object_id) from echo;
COUNT(OBJECT_ID)
----------------
72509
已用时间: 00: 00: 00.01
㈦ linq查询速度快还是sql啊
当然是SQL速度快。LINQ和SQL不是一个意义上的。SQL是直接操作数据库。
㈧ excel用sql查询快还是LOOKUP快
LOOKUP快。
LOOKUP函数在EXCEL中的查找函数中是以效率着称的,在处理成千上万的数据时的优势是其他函数所无法比拟的。
LOOKUP函数是以高效的运算速度被EXCEL函数爱好者喜欢,而且LOOKUP在日常实际工作中特别是数组公式,内存数组中应用广泛。
㈨ 请问在大数据量查询的时候,sql为什么比excel要快很多呢谢谢!
excel需要将所有数据加载,然后一条一条筛选,就是用来存放数据的
而sql是专门用于统计信息和调用的