在where条件用到的字段中建了索引也并没有快多少。。。
希望大家能有好的办法,多谢了,:)
6 个解决方案
#1
是不是机器问题呀?性能跟不上 用索引的话没那么慢吧
#2
服务器配置不算差(双至强,2G内存),sql语句也是最简单的delete from table where col = something...
#3
是不是你这个表中建的索引比较多,删除一个记录的时间与索引数量成正比,想想有比如5,6个索引的话就要删除几倍的数据,为了更快的删除记录,可以增加索引缓存的大小。也可能你如果经常做这样的大量数据删除的话,索引文件容易变的凌乱而效率变低或有可能损坏,如果是这样可以考虑周期性的重建索引(可以考虑在一个低使用时段做个定时程序处理)
#4
where里只使用了一个字段,而这个表只在这个字段上建了索引,没用索引的话,删除也一样很慢,:(;至于索引重建,本身这个表的数据每天都会被清空,我想作用应该不大,:(
#5
每天都清空,那没必要重建什么索引,试着增加索引缓存会不会好些。一天就有4,5百万,数据流量够大的,看看你的表是否可以拆分设计了,按col列拆分(如果col不同值不多的话),这样删的时候直接truncate table 就可以了,这种操作是非常快的,不过这个需要改动程序的。
#6
虽然没有解决问题,但还是要感谢大家的回复,结帖了。。
#1
是不是机器问题呀?性能跟不上 用索引的话没那么慢吧
#2
服务器配置不算差(双至强,2G内存),sql语句也是最简单的delete from table where col = something...
#3
是不是你这个表中建的索引比较多,删除一个记录的时间与索引数量成正比,想想有比如5,6个索引的话就要删除几倍的数据,为了更快的删除记录,可以增加索引缓存的大小。也可能你如果经常做这样的大量数据删除的话,索引文件容易变的凌乱而效率变低或有可能损坏,如果是这样可以考虑周期性的重建索引(可以考虑在一个低使用时段做个定时程序处理)
#4
where里只使用了一个字段,而这个表只在这个字段上建了索引,没用索引的话,删除也一样很慢,:(;至于索引重建,本身这个表的数据每天都会被清空,我想作用应该不大,:(
#5
每天都清空,那没必要重建什么索引,试着增加索引缓存会不会好些。一天就有4,5百万,数据流量够大的,看看你的表是否可以拆分设计了,按col列拆分(如果col不同值不多的话),这样删的时候直接truncate table 就可以了,这种操作是非常快的,不过这个需要改动程序的。
#6
虽然没有解决问题,但还是要感谢大家的回复,结帖了。。