sql语句表过大 如何优化....

问题描述

delete from Table1 twhere exists (select 1 from Table2 a where t.列2=a.列2 and t.列1=a.列1)其中Table1 数据有800多万条Table2 临时表有50多万条数据我跑了大半天都没好 = =求方案呀...谢谢啦... 问题补充:斐斐宝贝 写道

解决方案

ORACLE 我就无法测试但是我看了一下官方的文档http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10002.htm#i2071643你进去后搜索 DELETE TABLE, 我觉得你一样能够用left join做这个事,因为mysql 和 sqlserver都提供了这样的方法,没理由oracle不提供。
解决方案二:
你用的什么的数据库啊 ?我已经在mysql 5.5上面测试通过了,为什么不可能 left joindelete person from person left join depart on person.depart =depart.idwhere person.depart = '1';
解决方案三:
子查询的写法会比较慢,用两个表左连接或者右连接
解决方案四:
采用左连接,不要用in或者exists不能改善多少效率的,左连接的字段建立索引,我2千万主表附表很小,查询数据也不过3秒。
解决方案五:
建议建索引吧,800多万条的数据表也不算是大表了
解决方案六:
where条件中的字段是否已建立索引
解决方案七:
你试试不就知道了?
解决方案八:
不能执行,那是不可能的。
解决方案九:
delete Table1 from Table1 t,Table2 a where t.列2=a.列2 and t.列1=a.列1
解决方案十:
这样可以不?试试。delete from Table1 twhere t.列2,t.列1 in (select a.列2,a.列1 from Table2 a where t.列2=a.列2 and t.列1=a.列1)

时间: 2024-10-29 10:48:12

sql语句表过大 如何优化....的相关文章

select-我写过的最长的sql语句,求大神指点,

问题描述 我写过的最长的sql语句,求大神指点, SELECT t. NAME AS pro_name sum( ( SELECT IFNULL(COUNT(p.id) 0) AS before_year_pro_num FROM project_info p LEFT JOIN project_size s ON p.id = s.projectInfo_id WHERE ( DATE_FORMAT( ( SELECT MIN(s.start_time) FROM project_size W

sql语句问题求大神帮忙帮忙

问题描述 sql语句问题求大神帮忙帮忙 select count(*) from (SELECT HY_GUID,COUNT(*) number FROM dbo.BI_GYDD GROUP BY HY_GUID) a where number=1 select count(*) from (SELECT HY_GUID,COUNT(*) number FROM dbo.BI_GYDD GROUP BY HY_GUID) a where number=2 select count(*) from

sql语句-表T(A)包含正整数,可能有重复,构造一个SQL语句查询不在表T中的最小正整数

问题描述 表T(A)包含正整数,可能有重复,构造一个SQL语句查询不在表T中的最小正整数 表T(A)包含正整数,可能有重复,构造一个SQL语句查询不在表T中的最小正整数,需要考虑表T包含或不包含正整数1两种情况.不能编程实现.考虑了半天没有很好的思路,请大家指点则个 解决方案 DECLARE @minvalue INT = select min(A) from T IF minvalue > 1 return 1 ELSE DECLARE @maxvalue INT = select max(A

SQL语句。求大神解救

问题描述 可以不可以将tdyt下面的数据生成为表的字段.列名103061数据221749.440901 解决方案 解决方案二:你直接创建table列就用你检索到的数据.解决方案三:字段名不可以是数字吧?解决方案四:引用1楼rui888的回复: 你直接创建table列就用你检索到的数据. 求详解,比如这个表的名字叫a,创建表的名字为b,SQL应该怎么写呢?解决方案五:先createtable,在把select的结果insert到表中解决方案六:楼上说的对.解决方案七:creattableasele

SQL语句的优化分析

sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况. 网速不给力,不稳定. 服务器内存不够,或者SQL 被分配的内存不够. sql语句设计不合理 没有相应的索引,索引不合理 没有有效的索引视图 表数据过大没有有效的分区设计 数据库设计太2,存在大量的数据冗余 索引列上缺少相应的统计信息,或者统计信息过期 .... 那么我们如何给找出来导致性能慢的的原因呢? 首先你要知道是否跟sql语句有关,确保不是机器开不开机,服务器硬件配置太差,没网你说p啊 接着你使用我上一篇文章中提到

SQL语句优化提高数据库性能_MsSql

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化.为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN) 2)考虑使用临时表或表变量存放中间结果 3)少用子查询 4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S

分享几条sql语句命令优化技巧

1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过 搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分 开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用SQL时,尽量把使 用的索引放在选择的首列:算法的结构尽量简单:在查询时,不要过多地使用通配 符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1:在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL

SQL语句优化提高数据库性能

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化.为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN) 2)考虑使用临时表或表变量存放中间结果 3)少用子查询 4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S

Oracle查询SQL语句,请教各位大神

问题描述 Oracle查询SQL语句,请教各位大神 有这样一些数据: name subject张三 语文 李四 数学 张三 数学 李四 英语 张三 历史 想得到的结果: name subject张三 语文,数学,历史 李四 数学,英语 请教SQL语句,各路大神帮忙思考下. 解决方案 SELECT name , wmsys.wm_concat (subject) as result FROM 表名 GROUP BY name 解决方案二: 这个主要用SQL语句将subject里的数据拼接成一个字符