在mysql中有很多慢查询,只与update和delete相关。这些表有2个索引列,没有繁重的索引表。每个表平均有30K条记录。
请给出您的建议,如何克服与更新和删除查询相关的慢查询。这些类型的查询:
DELETE FROM <table2>
WHERE ID IN (SELECT ID
FROM <table1> WHERE ID2=100); ...or:
UPDATE <table1>
SET <colmunname>=0
WHERE id=1001; 发布于 2010-07-07 04:10:56
由于对表进行了索引,因此我的第一个建议是使用ANALYZE TABLE更新表的统计信息
ANALYZE TABLE table1, table2但要注意:
在分析期间,表使用MyISAM、BDB和InnoDB的读锁定进行锁定。
发布于 2010-07-07 04:09:21
你的问题只存在于更新和删除上,这一事实告诉我你可能索引太多了。
索引将极大地减少某些查询所需的时间,但在表中插入、更新和删除条目时将需要额外的工作。尝试消除经常更新的列上的索引,特别是如果它们不经常出现在where查询的SQL子句中。
发布于 2010-07-07 04:12:55
管理索引和外键关系都会在update和delete操作期间产生开销。我会在一台开发服务器上恢复你的prod db的一个副本,删除所有的外键约束,所有的期望你的主键索引,看看性能的差异。然后,您可以重新添加索引,直到您的应用程序有了更好的性能平衡。
https://stackoverflow.com/questions/3189771
复制相似问题