SQL 多选一个字段值只选一次 和多次从表里查询但查的字段较少 相比哪个性能更好?为啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 多选一个字段值只选一次 和多次从表里查询但查的字段较少 相比哪个性能更好?为啥?相关的知识,希望对你有一定的参考价值。
SQL 多次从一个表中查询耗费什么?
这个要看你的数据量来决定.SQL 多选一个字段值只选一次
意味着你 只发送一次 SQL 语句, 然后获得结果集合。
多次从表里查询但查的字段较少
意味着你 发送了多个 SQL 语句, 然后分别获得结果集合。
SQL 多次从一个表中查询
耗费的是:
网络之间,要额外传送SQL语句 (这个很多情况下,消耗可以忽略)
数据库需要 分析你的 SQL语句的合法性,并做SQL的解析,并分析查询计划,并从多个查询计划中,选择一个最优的查询计划,然后进行执行处理。 (这个过程消耗比较大,假如数据库参数配置的好。或者开发语言处理的时候,就是按照 一条SQL,修改参数的方式处理的话,那么消耗也不大)追问
数据倒是不多,关键是我想了解清楚性能的问题。
追答数据不多,那就一次 获取完就可以了.
因为这个没有一个固定的值.
假如你数据量大, 比如1000万.
你要一个 SQL语句, 一次 一口气读这一千万数据, 即时你数据库受得了,你的 客户端程序不知道会不会内存溢出。
那么这个时候,应该需要拆分处理,比如一条SQL获取 1万行, 或者 10万行, 客户端处理完一批数据了,再去重新检索一次,获取下一批的数据。
但是你数据量很小,比如就10行数据。
那显然是 一条SQL获取一下, 客户端一次就把数据获取完了。
这个情况下,要分 10条 SQL语句, 去执行10次, 分别获取 10次 1行数据。没有太大的意义。
因为 SQL 多次从一个表中查询耗费 i/0 开销,如果多个用户的话 容易出现 假死 i /o 开销过大
SQL 多选一个字段值只选一次 多选一个字段 对于数据库来说 基本没有什么影响, 但主要是在程序中加载时,循环取出字段 多了点 也就是 关键看程序 参考技术B SQL多次从一个表中查询的话,只会在内存中提取相应的数据,别的过程还是要正常走的!追问
比如我依次用一条新的sql从database中取id为1,2,3,4的数据,执行完id=1的那次以后,2,3,4的不会在缓存中取吧
追答这个主要还是要看你实用的数据库是什么了ORACLE在这点上要比SQLSERVER要好很多,SQLSERVER本身内存使用是很大的,而且缓存中清除也不是很及时!
追问好吧 我用的mysql数据库,数据不是很多,点击量大了会不会出现一楼说的那种死页面的情况?
追答看你服务器的性能了,这种问题分页取一下就很简单解决了!
参考技术C Select Distinct(*) From Table AS Ta inner Join Table As Tb on Ta.A=Tb.a and Ta.B<>Tb.BSQL Server 怎么用存触发器实现从一个表里查询数据,然后插入到另一个表里
我被插入的表里有3个字段,一个主键,其中字段都不能为空,要从另一个表里插入一个字段到被插入的表中,另外两个是默认值
参考技术A 表结构create table MyUser
(
UserName nvarchar(50) primary key,
PassWord nvarchar(50),
state int
)
//触发器
create trigger [MyUser_trigger]
on [dbo].[MyUser]
for insert,delete
as
begin
if exists ( select * from sysobjects where name = 'temp' and type = 'U')
drop table temp
select identity(int,1,1) as rowid,UserName into temp from MyUser
end
//测试数据
insert MyUser values('123','123',1)
insert MyUser values('admin','123456',2)
insert MyUser values('1234','1234',1)
insert MyUser values('administrator','123',2)追问
假如被插入的是部分字段呢?就是就是从一个表中选一个字段插入到另一个表中,但被插入的其它字段还不能为空
以上是关于SQL 多选一个字段值只选一次 和多次从表里查询但查的字段较少 相比哪个性能更好?为啥?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 怎么用存触发器实现从一个表里查询数据,然后插入到另一个表里