已掉线,重新登录

首页 > 绿虎论坛 > 电脑 > 其他 (发帖)

标题: 来看看这个SQL

作者: @Ta

时间: 2023-03-15

点击: 204

explain  SELECT `tradeid`, `name`, `val` FROM `t_tradesattr` WHERE (`name`='账号亮点') AND (`tradeid` IN ('50263473', '50262270', '50261296', '50233614', '50179571', '50175883', 50119000, '50243369', '50258839', '50234546'));

image.png(43.43 KB)



image.png(114.05 KB)

索引有的 命中索引  行数却有问题,太多了 说说为啥?

[隐藏样式|查看源码]


『回复列表(4|隐藏机器人聊天)』

1.

@ChatGPT,mysql explain 中的rows和实际行数一样吗?

(/@Ta/2023-03-15 18:42//)

2.

@卷心菜,MySQL 的 EXPLAIN 命令会展示 MySQL 优化器对查询计划的预估,并包含一些估算的统计信息。其中,rows 表示优化器估计的该执行计划扫描的行数。注意,这个值是 MySQL 优化器根据数据库统计信息计算出来的估计值,并不是实际行数,也不一定准确。

rows 的值通常是根据表的大小、索引的选择性、过滤条件等信息估算出来的。因此,实际查询的行数可能会比 rows 更多或更少,具体取决于查询的具体情况。在某些情况下,优化器可能会过于乐观地估计行数,导致实际扫描的行数比预估的要多,这可能会影响查询性能。

在执行 EXPLAIN 命令时,如果查询语句中包含了 LIMIT 限制条件,那么 rows 列的值可能会小于实际扫描的行数,因为 MySQL 只需要扫描满足限制条件的前若干行即可。

因此,rows 值只是一个估算值,而实际行数取决于具体的查询条件和数据情况。如果需要精确的行数统计,可以使用 SELECT COUNT(*) 或者其他统计函数来查询。

(/@Ta/2023-03-15 18:43//)

3.

@ChatGPT,mysql一张表上建太多索引有什么优劣

(/@Ta/2023-03-15 19:27//)

4.

@卷心菜,在 MySQL 中,索引是用于加速查询的重要手段之一。建立适当的索引可以加速查询,提高查询效率,从而优化数据库性能。但是,如果一张表上建立太多索引,则可能会出现以下的优劣:

优点:

  • 可以更快地处理特定的查询,因为索引可以使查询更快速、更高效。
  • 可以提高数据的完整性和安全性,因为索引可以确保数据的唯一性、完整性和正确性。
  • 可以提高数据的可靠性,因为索引可以检测和修复数据错误。
  • 可以提高数据库的扩展性和可维护性,因为索引可以帮助减少查询复杂度、提高查询性能和减少维护工作量。

缺点:

  • 建立过多的索引会增加数据库的存储空间,因为每个索引都需要额外的存储空间。
  • 建立过多的索引会导致插入、更新和删除操作变慢,因为每次操作都需要更新多个索引。
  • 建立过多的索引会导致查询性能下降,因为查询优化器可能无法正确选择最佳索引。
  • 建立过多的索引会增加数据库维护的难度,因为维护多个索引需要更多的工作量和时间。

因此,建立过多的索引可能会导致数据库性能下降和维护难度增加。在建立索引时,需要权衡索引的优点和缺点,并根据实际情况选择合适的索引。建立适当的索引可以帮助优化数据库性能,提高查询效率,从而提高系统的响应速度和吞吐量。

(/@Ta/2023-03-15 19:29//)

回复需要登录

9月15日 12:36 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1