我很好奇在db中的列上放置一个索引需要多长时间,该索引不是空的并且有大约100,000行。我理解,这取决于,但需要0.1秒,1秒还是10分钟?我应该在db?中的列索引期间停止用户的任何操作吗?
我问的原因是我不知道应该将哪些列编入索引(为了得到答案,我应该在实践中测量它,当表增长时),因为表几乎是空的并且项目没有上传。
谢谢。
答案 0 :(得分:1)
1)创建一个sqldump,将数据加载到另一个测试数据库并试用。
2)是的,您应该在任何类型的数据库维护期间阻止用户操作。即使更新速度很快,也可能出现问题,你应该给自己留出意想不到的空间。这也是一个很好的做法。
3)找出所需索引的最佳方法并不需要太多数据:
a)从设计的角度来看出最频繁调用和数据密集型的查询。建立他们查询的内容,索引要求应该是合乎逻辑的下一步。
b)了解如何阅读query plans并留意您想要避免的table scans。
答案 1 :(得分:1)
如果您不确定要编制索引的字段,那么我的第一个建议是阅读MySQL web site上的索引。
其次,我建议您转储数据,将其插入与您的实时环境完全分开的 TEST 环境,并在该计算机上执行测试。
您甚至可以考虑为实时MySQL实例创建一个从属实例。您停止从属实例,对其进行索引,然后等待它再次与主服务器同步。然后,您可以切换主实例和从属实例,以便您的实时环境不会受到影响。最后,您可以索引前主实例。但要做到这一点,你必须知道主从复制以及如何将主变换为从属,反之亦然。