----------------------------
Cards表有30000多条数据
cardSale表有20000多条数据
--------------------------t-sql
select a.* from cardSale a inner join cards b on a.cardID=b.cardID where a.payment=1 order by a.id asc查询时间 55秒
asp程序报错 【Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 】
Cards表有30000多条数据
cardSale表有20000多条数据
--------------------------t-sql
select a.* from cardSale a inner join cards b on a.cardID=b.cardID where a.payment=1 order by a.id asc查询时间 55秒
asp程序报错 【Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 】
FROM cardSale a
WHERE a.payment = 1
AND EXISTS ( SELECT 1
FROM cards b
WHERE a.cardID = b.cardID )
--ORDER BY a.id ASC
在cardSale 的id上创建一个asc的聚集索引。这样可以避免order by的开销。另外,在两表的cardid上创建非聚集索引试试。
如果单独执行很快,那么就不是SQL的问题了,关注下你的asp程序,可以开启数据库后台跟踪sql server profiler,看看代码实际执行情况。