mysql下监测数据库语句creating sort index时间过长的问题

在一张单表5000W数据上进行数据查询时传入两个单列索引条件,进行组合索引查询时,如果最后有order by id排序,与去除该排序,性能差距接近两个数量级

结论:在使用列的默认排序时,不应该再order by该列

顺便再记录一下遇到的其他SQL性能问题:

1, limit a,b 在a值过大时,也会导致性能严重下降,解决方案是获取到一批数据之后拿到最大的ID,然后在查询条件中加入>该ID 这样只需要limit一次获取的数量即可

2,条件更新时,如果数据量过大,先使用该条件进行查询得到要修改的列主键,再以主键为条件进行更新条件能提高性能

时间: 2024-11-03 10:26:25

mysql下监测数据库语句creating sort index时间过长的问题的相关文章

Mysql下在某一列后即表的某一位置添加新列的sql语句

Mysql简介 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库.  Mysql ALTER TABLE详细语法 ALTER TABLE用于更改原有表的结构.例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表.您还可以更改表的评注和表的类型.ww

MySQL数据库语句

一 . 常用mysql命令行命令        1 .启动MYSQL服务   net start mysql 停止MYSQL服务   net stop mysql 2 . netstat –na | findstr 3306 查看被监听的端口 , findstr用于查找后面的在端口是否存在 3 . 在命令行中登陆MYSQL控制台 , 即使用 MYSQL COMMEND LINE TOOL 语法格式 mysql –user=root –password=123456 db_name 或 mysql

mysql 复杂的查询语句,工作中用到的记录下

1  去重查询 select distinct id from user_info where xxxxxx 2 group by 分组查询中排序 group by本身没有排序功能,这可能是mysql不完美的地方,但是我们可以这样做 select attack_id, time from (select * from attack_log where (time+172800) < unix_timestamp(now()) order by time desc) attack_log grou

MySQL在Windows和Linux下还原数据库

Linux下还原数据库代码: 1,创建一个空的数据库cddl mysql> create database cddl; Query OK, 1 row affected (0.00 sec) 2,还原数据库 [[email protected] mysqlsoftware]# cd /etc/rc.d/init.d [[email protected] mysqlsoftware]# cd /etc/rc.d/init.d [[email protected] init.d]# mysql -h

mysql下的SELECT INTO语句

在mysql下使用SELECT INTO语句会产生ERROR 1327 (42000): Undeclared variable:new_tablename 此时要使用: CREATE TABLE CYRTEMP(SELECT Cno,COUNT(Sno),AVG(Score) FROM CYRReports GROUP BY(Cno)); 来替代原句: SELECT Cno,COUNT(Sno),AVG(Score) INTO SUM_AVGSco FROM CYRReports GROUP

从navicat for mysql导出数据库语句时应该加上的两条语句

为了不引起编码问题,一般在从navict for mysql导出一个数据库时在文件最前面添加这2句语句: CREATE DATABASE IF NOT EXISTS `` default character set utf8 COLLATE utf8_general_ci; USE ``; 其中在引号里填写的事数据库的名称

linux下mysql定时备份数据库

linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈   一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql 这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-01.sql里了,如果数据量大会占用很大空间,这时可以利用gzip压缩数据, 命令如下:#mysqldump -uuse

mysql下sql语句 update 字段=字段+字符串

原文:mysql下sql语句 update 字段=字段+字符串 mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgreSQL 用 || 来连贯字符串) MySQL连贯字符串不能利用加号(+),而利用concat. 比方在aa表的name字段前加字符'x',利用: update aa set name=concat('x',name) 原文地址:https://www.cnblogs.com/lonelyxmas

Linux平台下源码安装mysql多实例数据库

Linux平台下源码安装mysql多实例数据库[[email protected] ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6191/mysqld [[email protected] ~]# ss -tlunp | grep 330tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=6191,fd=10)) [[email protected] ~]# syst