mysql 查询速度慢仅仅不到 3000 条数据 3.8 秒

2019-09-27 09:46:17 +08:00
 571726193

12010 次点击
所在节点    Java
52 条回复
mikeguan
2019-09-27 09:48:42 +08:00
这个得上查询分析结果,explain 一下
571726193
2019-09-27 09:52:09 +08:00
@mikeguan 执行计划
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190927095128931.jpg)
dog82
2019-09-27 09:52:45 +08:00
表重建一下,我司把图片的二进制编码也存在 mysql 里,导致查询巨慢,我是第一次看到这么玩
571726193
2019-09-27 09:53:42 +08:00
@dog82 怎么 重建啊 我存的地址 啊
Vegetable
2019-09-27 09:56:36 +08:00
一般来说,选择所有也不存在说为查询时间,这个时间包括了网络传输时间(不太确定),我看你这表字段挺多的,可能是记录太大了传的慢.不然你试一下 select id from table?
571726193
2019-09-27 09:57:52 +08:00
@Vegetable select id 挺快的 ,实际业务 也没有 select * 的 但是 我就是 试了一下 感觉查询时间 太长了 不知道 啥问题 ,带宽目前是 5M 的 不知道有关系没
arrow8899
2019-09-27 09:59:21 +08:00
你这是因为数据量太大了,基本都是网络传输的时间,你切换到 概况 一栏,好像可以看具体的时间。
awker
2019-09-27 10:02:19 +08:00
type: ALL 就说明走了全表扫描,没有用到索引。
mikeguan
2019-09-27 10:02:36 +08:00
查所有记录和大的分段查询都很慢,尽量避免吧。像 Redis 的 keys *都有可能直接搞挂服务
b821025551b
2019-09-27 10:04:10 +08:00
type:ALL,没有索引;但是没索引也不至于这么慢,看看网络和磁盘 IO
bigbigeggs
2019-09-27 10:09:07 +08:00
我遇到过。和五楼观点一样。每一行的表字段太多,**从磁盘加载到内存太耗时间了**,如果仅查询 select id 那肯定不一样。不是查询慢,是磁盘到内存慢。我之前写过一篇博客,楼主可以看看。https://www.cnblogs.com/wenbochang/p/10257416.html
HowardTang
2019-09-27 10:47:08 +08:00
对接过 14s 的接口,手动狗头
CallMeReznov
2019-09-27 10:49:21 +08:00
首先,不要用 *
其次,我说完了.
himesens
2019-09-27 10:50:54 +08:00
* 换成具体列,或者把表拆分。
Raymon111111
2019-09-27 10:53:18 +08:00
一行数据多大?
TanLeDeDaNong
2019-09-27 10:54:11 +08:00
究竟多少字段,多少数据,你敢把查询结果导出一份.sql 看看大小吗
javen73
2019-09-27 10:54:35 +08:00
@CallMeReznov #13
@himesens #14
我之前看一篇 blog,不是说新的 MySQL 用*和指定全列效率差不多嘛
qq976739120
2019-09-27 11:02:01 +08:00
网络原因吧,3000 条数据,本地写个 txt 文件再读也不至于 4 秒
Vegetable
2019-09-27 11:02:49 +08:00
@javen73 的确,但是读取多余数据会浪费时间,上边说把二进制存数据库的就是,单条纪录太大了,查得是不慢,传的慢.
awanabe
2019-09-27 11:09:52 +08:00
没走索引...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604666

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX