Select语句,有一个表单A,里面字段不是很多,1个datetime的,然后后面的都是float类型,大概一共有20个float的字段,日积月累,往这个A表单添加记录,当这个A表单里面的记录很庞大的时候,我就发现进行查询操作就比较费时了,求各位大大能给我一个好的建议,这问题之前我也问过,不过没有得到很好的解决方法。是否需要将A表单进行分解,但又涉及到数据的连续性,我查询起来又很麻烦,所以这个问题请大家能帮忙想一下解决的办法。
实在是查询起来很慢,例如简单的select Data1 from A where DTime between ×××× and ×××× order by Dtime Desc。当记录有上万条的时候,那个速度简直是牛×。
实在是查询起来很慢,例如简单的select Data1 from A where DTime between ×××× and ×××× order by Dtime Desc。当记录有上万条的时候,那个速度简直是牛×。
解决方案 »
- 关于年、月、日三个字段输入的有效性规则
- vb Format
- 视频采集编程高手请进来...
- 在线等马上给分:感觉有点难度,关于关闭窗口问题
- 急急急!!!MSCOMCTL.OCX 控件过期(VB)
- 用FPSPREAD返回绑定记录时的速度问题
- select top 10 * from (select rand() as OrderNo,* from table_name) order by OrderNO
- 关于数据库添加记录的问题,急!谢谢!
- 关于datacombo的问题
- 请看灌水大贴:http://www.csdn.net/expert/TopicView.asp?id=52761
- 高分求助!不能新建excel
- 读取 datagride1.text中的值给text1.text的问题,小事,但着急,请帮忙解决一下吧,
用 Sql Server 数据库系统,应该好一点吧,所以还是的熟悉一下 Sql Server 2005,或2008,或者 DB2,Oracle,里面的功能很多,可以写成一个存储过程,或者事务,触发器什么的
SELECT A.姓名,ISNULL(B.本月工资,A.基本工资) 本月工资
FROM 基本信息 A
LEFT JOIN (SELECT TOP 1 * FROM 工资变动明细 WHERE 统计日期 BETWEEN XXX AND XXX ORDER BY 统计日期 DESC) B
ON B.员工编号=A.员工编号
如果想完整地显示某一时间段内的信息,则使用右连接,比如:
SELECT A.姓名,B.本月工资
FROM 基本信息 A
RIGHT JOIN (SELECT TOP 1 * FROM 工资变动明细 WHERE 统计日期 BETWEEN XXX AND XXX ORDER BY 统计日期 DESC) B
ON B.员工编号=A.员工编号
之后再试试,,几万条数据,会很快
存储过程最好对Order BY 字段 加上 索引 做优化
2)用 (DTTime >= ××××) AND (DTime <= ××××) 代替 DTime between ×××× and ××××