批量查询数据库是否存在某个数据

批量查询数据库是否存在某个数据,第1张

1.通常遇到这种问题,最初步的想法就是循环,读取数据库判断

2.更进一步,由于循环访问数据库导致性能十分低下,是否可以先取出全集,到内存中进行比较,这里需要提醒的是使用HashSet或Dictionary判断是否存在比List性能要高

3.但当全集数据量极大的时候,这种做法可能会导致内存不足,接下来考虑是否能缩小提取的范围

4.提取原始数据时,直接只提取ID在需要比较的列表中,即selectidfromtablewhereidin(需要判断的id结果集),单数据提取到HashSet,kv的提取到Dictionary

5.提取出in条件的结果集后,与待比较的ID进行对比,取出的结果集中存在的ID,即是已存在的信息,不存在的,就是新增的ID

楼上的大哥....人家没说一定是SQL Server数据库吧..聚集索引是SQL Server的概念.1楼有一点说对了..创建索引是可以优先考虑的选择,但是,并不是索引就一定会加快查询速度的..另外,索引是很消耗磁盘空间的,这点也需要考虑清楚..主流的数据库,在建表的时候就规定了主键和外键的话,那么对应的主键和外键会自动加索引的.另外SQL语句的好坏可能会造成数倍的查询速度的差别..写SQL的时候有二个基本的原则,一.越接近数据库核心的SQL语句查询速度越快.即:用通用的标准SQL函数或语法,一定会比数据库产品扩展的SQL要快大约80%所有二.优先使用子查询而不是关联查询,比如表关联(即FROM后面有多个表)...SQL语句也是可以优化的

SQL 关键索引,在大表上创建索引

千万记录的表不算大,只要索引创建对了,性能可以正常提升,

还有一种就是比较偏的方式:先把需要批量的数据库插入临时表

这个可以防止频繁对表进行查询 *** 作,

SQL 如下:select * into #Temp from Table

后面就只需要对临时表 *** 作,不允许主表性能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9427108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存