优化一个mysql语句
发表于:2024-10-14 作者:千家信息网编辑
千家信息网最后更新 2024年10月14日,优化了一个mysql的语句,没有什么技术含量,说一下过程:优化前语句如下,大约执行时间为1-2秒select u.id ,u.s_user_name,u.s_user_img,(select cou
千家信息网最后更新 2024年10月14日优化一个mysql语句
优化了一个mysql的语句,没有什么技术含量,说一下过程:
优化前语句如下,大约执行时间为1-2秒
select u.id ,u.s_user_name,u.s_user_img,(select count(a.n_copy_count) from t_fonts a join t_practicerecords b on b.n_font_id=a.id where a.n_user_id=u.id and b.n_delete=0 group by a.n_user_id)as n_copy_count,case when (select count(id) from t_friendships where n_user_id=11311 and n_friend_id=u.id)>0 then 'true' else 'false' end as is_collected from t_users u where BINARY `s_user_name` = '做字小助手' order by LENGTH(s_user_name) asc ,id asc limit 0,10
相关的执行计划如下:
mysql> EXPLAIN select u.id ,u.s_user_name,u.s_user_img,(select count(a.n_copy_count) from t_fonts a join t_practicerecords b on b.n_font_id=a.id where a.n_user_id=u.id and b.n_delete=0 group by a.n_user_id)as n_copy_count,case when (select count(id) from t_friendships where n_user_id=11311 and n_friend_id=u.id)>0 then 'true' else 'false' end as is_collected from t_users u where BINARY `s_user_name` = '做字小助手' order by LENGTH(s_user_name) asc ,id asc limit 0,10;+----+--------------------+---------------+------------+--------+-------------------------------------------------------------+---------------------------------+---------+------------------+---------+----------+-----------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+--------------------+---------------+------------+--------+-------------------------------------------------------------+---------------------------------+---------+------------------+---------+----------+-----------------------------+| 1 | PRIMARY | u | NULL | ALL | NULL | NULL | NULL | NULL | 1360606 | 100.00 | Using where; Using filesort || 3 | DEPENDENT SUBQUERY | t_friendships | NULL | eq_ref | PRIMARY,PK__T_friend__3213E83F571DF1D5,user_index,n_user_id | PRIMARY | 8 | const,sykdb.u.id | 1 | 100.00 | NULL || 2 | DEPENDENT SUBQUERY | a | NULL | ref | PRIMARY,n_user_index | n_user_index | 4 | sykdb.u.id | 7 | 100.00 | Using index condition || 2 | DEPENDENT SUBQUERY | b | NULL | ref | idx_fid_score_delete_uploadtime | idx_fid_score_delete_uploadtime | 5 | sykdb.a.id,const | 5 | 100.00 | Using index |+----+--------------------+---------------+------------+--------+-------------------------------------------------------------+---------------------------------+---------+------------------+---------+----------+-----------------------------+4 rows in set, 4 warnings (0.00 sec)
对t_users表的s_user_name字段创建索引,并修改表结构
mysql> create index idx_user_name on t_users (s_user_name);Query OK, 0 rows affected (5.55 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table t_users modify s_user_name varchar(100) binary;Query OK, 1474778 rows affected (45.23 sec)Records: 1474778 Duplicates: 0 Warnings: 0
修改语句把binary去掉,再次查询如下:
mysql> select u.id ,u.s_user_name,u.s_user_img,(select count(a.n_copy_count) from t_fonts a join t_practicerecords b on b.n_font_id=a.id where a.n_user_id=u.id and b.n_delete=0 group by a.n_user_id)as n_copy_count,case when (select count(id) from t_friendships where n_user_id=11311 and n_friend_id=u.id)>0 then 'true' else 'false' end as is_collected from t_users u where `s_user_name` = '做字小助手' order by LENGTH(s_user_name) asc ,id asc limit 0,10;+----+-----------------+--------------------------------+--------------+--------------+| id | s_user_name | s_user_img | n_copy_count | is_collected |+----+-----------------+--------------------------------+--------------+--------------+| 2 | 做字小助手 | /0/1/photo/20160729035328.jpeg | NULL | false |+----+-----------------+--------------------------------+--------------+--------------+1 row in set (0.00 sec)
不过修改表结构需谨慎。
助手
语句
结构
再次
含量
字段
技术
时间
索引
过程
查询
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
简述防火墙对于网络安全的重要性
jdkb中数据库连接对象
软件开发就业前景工资多少
计算机网络技术专业毕业答辩
怀化软件开发培训选哪家
安卓 下软件开发
山西吕梁有没有软件开发公司
2022年数据库系统工程师
dts导入导出数据库脚本
如何面试数据库工程师
藏医数据库
图纸管理系统数据库设计
网络安全谨防网络泄密
服务器管理应用模块一
计算机三级网络技术浙江卷
庐江正规网络技术开发不二之选
北京网络服务器机柜售后
司法局网络安全管理办法
数据库 多对多联系 ER
广州思科网络技术学院
视图安全 数据库实验报告
红桥区网络技术答疑解惑
网络安全产品型
网络安全厂商估值
宁波游戏软件开发教程
网络安全工程师硕士专业选择
软件开发的课程设计
软件开发外包人月 价格
中国欧洲风湿免疫硬皮病数据库
万方的查重数据库资源