- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试微调我的 MySQL 服务器,因此我会检查我的设置、分析慢查询日志,并在可能的情况下简化我的查询。
有时如果我正确地建立索引就足够了,有时则不然。我在某处读到(如果这是愚蠢的,请纠正我),比我需要的更多的索引会产生相同的效果,就像我没有任何索引一样。
多少个索引就够了?你可以说这取决于数百个因素,但我很好奇如何清理我的 mysql-slow.log
以减少服务器负载。
此外,我还看到了一些“有趣”的日志条目,如下所示:
# Query_time: 0 Lock_time: 0 Rows_sent: 22 Rows_examined: 44
SELECT * FROM `categories` ORDER BY `orderid` ASC;
有问题的表恰好包含 22 行,索引设置在 orderid
中。为什么这个查询最终会出现在日志中?如果只包含 22 行,为什么要检查 44 行?
最佳答案
索引的数量和做太多的线将取决于很多因素。在像“类别”表这样的小表上,您通常不需要或不需要索引,这实际上会损害性能。原因是它需要 I/O(即时间)来读取索引,然后需要更多的 I/O 和时间来检索与匹配行关联的记录。一个异常(exception)是当您只查询索引中包含的列时。
在您的示例中,您正在检索所有列并且只有 22 行,并且只进行表扫描并对这些列进行排序而不是使用索引可能会更快。优化器可能/应该这样做并忽略索引。如果是这样,那么索引只是占用空间而没有任何好处。如果您的“类别”表经常被访问,您可能需要考虑将它固定到内存中,这样数据库服务器就可以保持它的可访问性,而不必一直访问磁盘。
添加索引时,您需要平衡磁盘空间、查询性能以及更新和插入表的性能。与每天更新数百万次的表相比,您可以在静态且变化不大的表上使用更多索引。那时您将开始感受到索引维护的影响。不过,在您的环境中可接受的内容只能由您和您的组织决定。
进行分析时,请务必生成/更新您的表和索引统计信息,以确保计算准确。
关于MySQL 索引 - 多少就足够了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277865/
对于我的问题,我找不到更好的措辞。 在我的应用程序中的某个时刻,我设置了一些非常密集的动画。问题是,在高端设备上,动画运行流畅且赏心悦目。另一方面,我测试过的一台低端设备在制作动画时表现非常糟糕。 试
我正在修补 OTP 模块 ( yubico_pam ),并尝试访问管理员选择的控制标志(例如必需,足够, ETC)。 有什么想法吗?这是否可行(无需解析文件)? 最佳答案 无法在 API 中查询此信息
我有一些为 Linux 编写的 C 代码,依赖于套接字和 arpa/inet.h 以及 libusb.h,我想在 MinGW 下为 Windows 编译它。 (请注意,当前项目只有一个非常简单的 Ma
我是一名优秀的程序员,十分优秀!