- 论坛徽章:
- 93
|
回复 1# royzs
这些简单查询都能查20多秒?即使是 id 字段不是主键不是索引也不大应该的样子,是不是服务器性能本身也不大好?
- # User@Host: bcm789[bcm789] @ localhost [127.0.0.1]
- # Query_time: 23.927186 Lock_time: 22.876502 Rows_sent: 10 Rows_examined: 10
- SET timestamp=1482589114;
- select user_id from `bcm789`.`ecs_users` where parent_id = '38663';
- # User@Host: bcm789[bcm789] @ localhost [127.0.0.1]
- # Query_time: 23.907202 Lock_time: 22.856533 Rows_sent: 1 Rows_examined: 1
- SET timestamp=1482589114;
- SELECT * FROM `bcm789`.`ecs_users` WHERE user_id = '6515';
- # User@Host: bcm789[bcm789] @ localhost [127.0.0.1]
- # Query_time: 23.908687 Lock_time: 22.857006 Rows_sent: 1 Rows_examined: 1
- SET timestamp=1482589114;
- SELECT * FROM `bcm789`.`ecs_users` WHERE user_id = '21541';
- # User@Host: bcm789[bcm789] @ localhost [127.0.0.1]
- # Query_time: 23.918694 Lock_time: 22.866703 Rows_sent: 1 Rows_examined: 1
- SET timestamp=1482589114;
- SELECT * FROM `bcm789`.`ecs_users` WHERE user_id = '68461';
复制代码 如果上述所说 id 不是索引自然这个连接操作也快不到哪去,而 or 条件里两个字段如果有一个不是索引也会影响速度,对于前面的 state 条件,想必重复数据很多,即使做索引也没多大效果:
- select dr.*,u.user_name,u.real_name from `bcm789`.`ecs_double_rate` as dr left join `bcm789`.`ecs_users` as u on dr.user_id = u.user_id where dr.state='0' and (u.declaration_center=8661 or dr.user_id=8661) order by dr.dr_id desc limit 0,10;
复制代码
像这些前后都有 % 号的 like 查询每一本SQL书籍都会说到不要这样用的啦:
- SELECT COUNT(*) FROM `bcm789`.`ecs_users` WHERE 1 AND user_name LIKE '%k526010%' or email like '%k526010%' or mobile_phone like '%k526010%';
- SELECT user_id, user_name,real_name, email, mobile_phone,parent_sn, is_validated, validated, user_money, frozen_money, rank_points, pay_points, status,user_type, reg_time, froms,is_special,special_start_time,special_end_time FROM `bcm789`.`ecs_users` WHERE 1 AND user_name LIKE '%k526010%' or email like '%k526010%' or mobile_phone like '%k526010%' ORDER by user_id DESC LIMIT 0,15;
复制代码
另外提醒楼主文件中有一些insert语句包含敏感信息,建议删除掉这些内容再上传附件。
|
|