查询优化的问题???? 我的办法:xzbh+sjbh+xjbh+yzbh定义为index,rq定义为index,不知大家还有什么好办法??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 create another table to record summary data, monthly update. 几个意见:1.Varchar改为Char,特别是Varchar(10)以内的.2.xzbh+sjbh+xjbh+yzbh定义为index,总的可以,但要注意顺序,我觉得应该是yzbh,xzbh,sjbh,xjbh.3.你说的油量合计,我的理解是分"油品编号"合计的,而不是合在一起一个总数,所以应该有ypbh的INDEX,可以单独建一个或者把yzbh,xzbh,sjbh,xjbh改为ypbh,yzbh,xzbh,sjbh,xjbh.以上个人意见,供参考. 2.xzbh+sjbh+xjbh+yzbh定义为index,总的可以,但要注意顺序,我觉得应该是yzbh,xzbh,sjbh,xjbh.怎么来考虑"顺序"?? 考虑"顺序"问题,三言两语说不清楚,要结合实际环境,多做试验,试验结果才能确定哪个顺序最好.主要考虑:查询在WHERE里用得多的字段一般放前面. 数据,数据变化多的字段一般放前面.另外要提醒的是:索引只是优化的问题的一部分,索引要和SQL语句优化一起考虑,必要时要考虑服务器的优化. 感谢大家的回复!to Haiwer(海阔天空): 你的分析很对,语句中的查询条件有一个时间段(rq>=t1 and rq<t2),有一个油品编号的选择(ypbh in (101,102,103,...)似乎这样效率不高),还有一个油站的选择yzbh in (11001001,11001002,11001003,...)最后还有一个销售类型的选择,条件似乎太多了,现在我不知道索引的建立顺序应该怎么排,以上的每一个条件都要用到,头大!!! 如果能改程序的话,最好想个办法不要用这么多IN.条件多不怕!你的关键不在索引的顺序上,应该在IN上. 谢谢Haiwer(海阔天空)老兄!!! 我觉得你的数据库在日期和油站编号(xzbh+sjbh+xjbh+yzbh)这两维数据上建立索引,就应该可以加快速度,另外写点sql语句要最大限度使用索引。在in的问题上可以通过建立包含各种数据类型的视图来解决,如果是2000还能建立视图索引。 sql 两张不完整的表的查询 Sql历史操作记录跟踪方法讨论 数据删除后数据库文件为什么那是那么大 我在建立全文索引得时候(用向导建),完成的时候他说目录名无效是怎么回事呀??? 请帮我解决这个问题 请帮忙看看这个SQL语句该怎么写? 初级问题 Jet中的TOP语句怎么个用法??写个例子吧? 如何从数据表的两个数字字段中,取其中数字较小的字段?谢谢! SQL如果连接查询去重复?? 如何获知Sql Server 7 安装在哪个盘上 如何从日志中将删除的记录恢复(sql server)
1.Varchar改为Char,特别是Varchar(10)以内的.
2.xzbh+sjbh+xjbh+yzbh定义为index,总的可以,但要注意顺序,我觉得应该是yzbh,xzbh,sjbh,xjbh.
3.你说的油量合计,我的理解是分"油品编号"合计的,而不是合在一起一个总数,所以应该有ypbh的INDEX,可以单独建一个或者把yzbh,xzbh,sjbh,xjbh改为ypbh,yzbh,xzbh,sjbh,xjbh.以上个人意见,供参考.
怎么来考虑"顺序"??
主要考虑:查询在WHERE里用得多的字段一般放前面.
数据,数据变化多的字段一般放前面.另外要提醒的是:索引只是优化的问题的一部分,索引要和SQL语句优化一起考虑,必要时要考虑服务器的优化.
to Haiwer(海阔天空):
你的分析很对,语句中的查询条件有一个时间段(rq>=t1 and rq<t2),有一个油品编号的选择(ypbh in (101,102,103,...)似乎这样效率不高),还有一个油站的选择yzbh in (11001001,11001002,11001003,...)最后还有一个销售类型的选择,条件似乎太多了,
现在我不知道索引的建立顺序应该怎么排,以上的每一个条件都要用到,头大!!!
条件多不怕!你的关键不在索引的顺序上,应该在IN上.
在in的问题上可以通过建立包含各种数据类型的视图来解决,如果是2000还能建立视图索引。