全表扫描与索引

[quote]全表扫描,索引扫描各有适用的场合,全表扫描不代表效率一定差,索引扫描也不一定就代表高效。
在实际应用开发过程中,如何创建索引,根据什么字段创建索引是个很复杂的问题。这通常和查询是相关的。
不合适的索引不会带来性能的提升。例如:表test有一个字段op_code,100多万条记录只有几十个不同的值,如果仅用op_code作为查询条件,即使在op_code上创建索引,也不会带来查询性能的提升。
如果一张表只有几百条记录,全表扫描的效率更高,只是频繁的访问可能会导致过高的consistentgets,cpu资源可能会消耗多一点。
还是要具体情况具体分析。索引也是要占用空间的,而且扫描索引也要消耗不少资源。[/quote]


用Distinct会导致查询时数据库进行排序,数据量大时会大大增加查询的时间,就象union和

union all,在有几万条数据,where语句比较复杂时,union的查询时间会是union all的几百乃至几

千倍,就是因为union在查询时会排序。
但你的查询还必须用distinct. 你可以修改你的表结构,一般主从表之间出现多对多的关系是不正常的,如果能修改的话,去掉distinct速度会大大加快。
你也可以建索引,一般一个表建两三个索引正好,索引如果建多了,查询速度会快,当然,如果

这些索引你能用的着的话,但insert,update的速度就会变慢,相反,如果建少了,select慢,

insert,update快。
有时,你可以在where条件中加如sarrangeno<>'',或no >0,不要以为这是废话,认为

sarrangeno本来就不可能为空,no肯定大于零。但加了此语句之后,你的查询速度可能会增加几倍乃至

几十倍,因为他直接决定你的索引是否能够启用,记住,索引建了以后并不一定能够用上.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值