我们写了可以查询生产数据库的运维小工具,方便排查问题,以前不怎么记得表字段,会用这个来查查记录。一直没啥问题,今天用了这个语句,结果执行了很长时间,然后数据库发出 jvm 告警,想问下,这个 sql 会进行全库扫描吗?我一直以为这个直接读取前 10 行就返回数据了。
|      1Chinsung      2023-01-09 11:08:29 +08:00 | 
|  |      2funbox      2023-01-09 11:10:43 +08:00 加一个主键排序 | 
|  |      3F281M6Dh8DXpD1g2      2023-01-09 11:13:27 +08:00 显然不是全表扫描 | 
|      4r4aAi04Uk2gYWU89      2023-01-09 11:40:08 +08:00 type 是 all ,确实是 full table scan 。rows 是查询到满足条件的数据前,大概需要扫描的行数,不是完全精确。 不是说加了索引就一定走索引,在表数据量小的情况下,全表扫描性能可以优于索引。 | 
|  |      5ttwxdly      2023-01-09 11:56:11 +08:00  2 显然优化器觉得扫全表比主键快。 | 
|  |      6idblife      2023-01-09 12:37:51 +08:00 可以查询生产数据库的运维小工具 你们 DBA 是不是想弄死你 | 
|  |      7bjzhush      2023-01-09 12:53:54 +08:00 select * from table where id >=1  and id <= 100 id 为主键 这样是最好的 | 
|  |      8hhjswf      2023-01-09 13:00:19 +08:00 via Android 是不是数据量太少,优化器感觉这么搞比较快 | 
|  |      9PendingOni      2023-01-09 13:00:19 +08:00  | 
|  |      10wolfie      2023-01-09 13:05:18 +08:00 这个跟 主键、索引 有关系??? | 
|  |      11PendingOni      2023-01-09 13:11:05 +08:00 | 
|  |      12akira      2023-01-09 15:35:46 +08:00 那如何避免这种情况再次出现呢?  提前给表一个别名? 或者 sql 做下正则过滤,确保 limit 后面必须有空格? | 
|  |      13ruiyinjinqu OP @akira sql 必须带上 where 可以避免 | 
|  |      14ruiyinjinqu OP @idblife 因为每次查数据都要提工单,然后运维部门还没空,一个一下午就能解决的问题,一周都解决不了,所以。。。。 | 
|  |      15qeqv      2023-01-09 17:12:12 +08:00 MySQL 有反引号,习惯使用就不会出错。 ``` select * from `t1` limit 10; ``` | 
|  |      16idblife      2023-01-09 17:35:23 +08:00 | 
|  |      17ElmerZhang      2023-01-09 20:33:23 +08:00 @ruiyinjinqu 不一定都有 where 的需求,总不能都加个 where 1 = 1 ,傻傻的。我的习惯是查多条时都带上 order by id desc 。 | 
|  |      18kingpo      2023-01-09 23:36:33 +08:00 select top 10 * from table_name  ,只查前 10 ,也没有查全表吧 | 
|  |      19netabare      2023-01-10 00:53:57 +08:00 via Android  1 ………这种关键词一般前后都要加空格的吧 | 
|      20alwaysdazz      2023-01-10 04:02:47 +08:00 via Android 查数据的界面没有关键字高亮提示吗 | 
|      21hdiwhsg      2023-01-10 08:42:44 +08:00 via iPhone xswl | 
|  |      22xaplux      2023-01-10 08:54:34 +08:00 。。。。。。 | 
|  |      23wetalk      2023-01-10 09:39:10 +08:00 啊这这这,缺空格很明显看出来吧。。 | 
|  |      24HaoC12      2023-01-10 10:58:54 +08:00 awsl | 
|  |      25ruiyinjinqu OP @alwaysdazz 自己在管理台写了个简单页面,没有高亮啥的,对请求返回参数还 rsa 加密了 :( | 
|      26xlzyxxn      2023-01-16 14:05:16 +08:00 2 楼 5 楼说的对 | 
|      27xlzyxxn      2023-07-26 10:25:41 +08:00 学习了一下,type 是 ALL 全表扫描,但是是扫了 10 个后就截断了直接返回了。意思就是是全表扫描,但没扫完 |