
mysql
weixin_42590334
这个作者很懒,什么都没留下…
展开
-
一张900w的数据表,怎么把原先要花费17s执行的SQL优化到300ms
有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),按照下文的方式调整SQL后,耗时347 ms (execution: 163 ms, fetching: 184 ms)。操作:查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段。原理:减少回表操作-- 优化前SQLSELECT 各种字段FRO原创 2020-07-25 10:34:24 · 347 阅读 · 0 评论 -
MySQL数据库总结
一、数据库简介数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。数据表:数...转载 2020-01-31 22:37:17 · 157 阅读 · 0 评论 -
MYSQL5.7版本解决sql_mode=only_full_group_by问题
具体出错提示:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in G...原创 2019-12-18 17:54:17 · 223 阅读 · 0 评论 -
神奇的 SQL 之温柔的陷阱: 三值逻辑 与 NULL
NULLNULL 用于表示缺失的值或遗漏的未知数据,不是某种具体类型的值。数据表中的 NULL 值表示该值所处的字段为空,值为 NULL 的字段没有值,尤其要明白的是:NULL 值与 0 或者空字符串是不同的。两种 NULL 这种说法大家可能会觉得很奇怪,因为 SQL 里只存在一种 NULL 。然而在讨论 NULL 时,我们一般都会将它分成两种类型来思考:“未知”(unknown)和...转载 2019-12-10 16:27:15 · 141 阅读 · 0 评论 -
MySQL:数据库优化
前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷.1. 优化一览图2. 优化笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置.2.1 软优化2.1.1 查询语句优化1.首先我们可以用EXPL...原创 2019-11-18 11:54:16 · 111 阅读 · 0 评论 -
MySql常用30种SQL查询语句优化方法
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。如:select id from t where num is nul...原创 2019-10-30 09:41:15 · 105 阅读 · 0 评论 -
专业解决 MySQL 查询速度慢与性能差
什么影响了数据库查询速度1.1 影响数据库查询速度的四个因素1.2 风险分析QPS:QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS:是 TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。客户机在发送请求时开始计时,收到服务器响应后结...原创 2019-10-12 11:39:12 · 209 阅读 · 0 评论 -
MySQL高级知识总结
环境win10-64MySQL Community Server 5.7.1mysqld –version可查看版本官方文档SQL执行顺序手写顺序我们可以将手写SQL时遵循的格式归结如下:select distinct <select_list>from <left_table> <join_type> join <...原创 2019-08-27 10:48:21 · 322 阅读 · 0 评论 -
MySQL面试常问问题
为什么用自增列作为主键如果我们定义了主键(PRIMARYKEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引、如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。数...原创 2019-08-21 17:15:57 · 636 阅读 · 0 评论 -
mysql 过滤查询(以字母开头,以数字开头,非数字开头,非字母开头)
– 不是以数字开头select * from mot_terms where `name` not REGEXP '^[0-9]' – 不是以字母开头select * from mot_terms where `name` not REGEXP '^[a-zA-Z]' – 已数字和特殊字符开头select * from mot_terms where `name` REGEXP '...原创 2019-08-21 15:58:21 · 3653 阅读 · 0 评论 -
使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名
MySQL中查询所有数据库名和表名查询所有数据库show databases;查询指定数据库中所有表名select table_name from information_schema.tables where table_schema='database_name' and table_type='base table';查询指定表中的所有字段名select colu...原创 2019-06-04 10:08:02 · 438 阅读 · 0 评论 -
mysql 递归查询
1、创建表:DROP TABLE IF EXISTS `t_areainfo`;CREATE TABLE `t_areainfo` ( `id` int(11) NOT NULL DEFAULT '0' AUTO_INCREMENT, `level` int(11) DEFAULT '0', `name` varchar(255) DEFAULT '0', `parentId` int...原创 2019-06-04 10:00:34 · 168 阅读 · 0 评论 -
关于MySql中使用CASE WHEN/IFNULL()函数失效的问题
今天碰到一个问题:在联表查询取得结果后,如果取得的结果是空值,则给一个默认值,如果不是空值,则返回这个值。我们来看看一开始错误的写法:SELECT IFNULL(id,0) from project_menu where code =(SELECT code FROM menu where id =(SELECT parent_id from menu where code = #{men...原创 2019-06-04 09:42:59 · 3514 阅读 · 0 评论 -
MySQL的分区和分表
分区分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。mysql支持的分区类型包括Range、List、Hash、Key,其中Range比较常用:RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。HASH分区:基于用户定义的表达式的返回值来进行选择的分区...转载 2019-05-22 14:52:26 · 119 阅读 · 0 评论 -
Mysql常用的几种数据库引擎比较
Innodb引擎Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECTCOUNT(*) FR...原创 2019-05-22 11:38:58 · 410 阅读 · 0 评论