database
文章平均质量分 82
sand_clock
向前看
展开
-
稀疏索引与稠密索引
在谈这两个索引之前,我们要明白为什么要使用索引,当内存容纳不下记录本身大小,我们存储较小的索引,这样查找记录最多只需要一次I/O操作。先说一下聚集索引的定义:聚集索引:在一张表中,如果一个索引有如下特性,数据的物理顺序与键值得逻辑顺序相同,则该索引叫聚集索引。稠密索引和稀疏索引都属于聚集索引。1. 稠密索引定义:它由键值和指针(指向记录本身地址)组成的一系列存原创 2017-03-30 09:52:53 · 6856 阅读 · 0 评论 -
MySQL查询表的所有列名,用逗号拼接
问题场景在MySQL中,需要以逗号拼接一个表的所有字段sql语句SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ",") FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name'原创 2017-07-06 12:33:41 · 5705 阅读 · 0 评论 -
MYSQL-实现split函数
问题场景表名:tb_a 表字段:id,gene_id,chr [都是varchar] 值: 要求按照以’_’分割后的第三位大小倒序排序记录。解决思路a 取出目标数字字符串(首先实现split函数),起一个别名为num b 按照MYSQL-对varchar类型字段(都是数字)按照整数大小倒序排列 文章思路排序SQLselect *, SUBSTRING(SUBSTRING_INDEX(gene原创 2017-09-04 16:03:08 · 1502 阅读 · 0 评论 -
MYSQL-对varchar类型字段(都是数字)按照整数大小倒序排列
问题场景表名:tn_name 表字段:id,name,chr [都是varchar] 值: name chr zhangsan 10 lisi 1233 wangwu 45要求:见标题。SQLselect * from tb_name order by -chr asc;效果原创 2017-08-30 18:07:45 · 1208 阅读 · 0 评论 -
MYSQL-利用if函数把NULL或者空串儿排在后面
问题场景表名:tb_a 表字段:id,gene_id,chr [都是varchar] 值: 要求按照chr数值大小升序并且没有值(NULL或者空串)的放在后面。前言在MySQL里按照chr字段升序排列的话(默认升序),NULL或者空串儿会被放在前面 降序则相反 但是降序满足不了chr按照数值大小升序排序(因为是chr被定义为varchar类型)解决方式a 用if函数判断NULL或者空原创 2017-09-08 13:28:26 · 1579 阅读 · 0 评论 -
MySQL根据某一个或者多个字段查找重复数据,并且保留某字段值最大的记录
问题场景当系统没有处理好并发操作的情况下,操作人员同时操作一张表的情况下,数据库有可能被插入相同记录,这些会带来隐藏的bug。解决思路一解决并发操作的冲突。解决思路二对数据库(MySQL)某张表去重,首先确定你的业务是否允许重复,不允许你重复的话可以建立唯一索引和联合唯一索引来保证记录不重复,但如果出现了重复记录,怎么办?请看下文。情况一:对一个字段查找重复记录表数据: a. 首先根据sample原创 2017-07-07 17:11:40 · 42834 阅读 · 4 评论 -
插入大数据量方法-MySQL
背景有一个4千万行的4列字段文件data.txt要插入数据库,假设表名为table_name,字段分别为A,B,C,D,其中每行唯一标识为A+B,文件里面有重复数据(根据A+B确定),需要保留行数大的记录。解决方案方案一: 1、表结构设计:设置A,B为联合主键; 2、逐行读取文件,插入前根据A+B判断是否有重复,有则更新,没有则插入。 方案二: 1、表结构设计:先不设置A,B为...原创 2018-07-03 12:35:02 · 2924 阅读 · 0 评论 -
MYSQL-查看每个数据库的大小和每个表的大小
每个数据库大小select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_sizefrom information_schema.tablesgroup b...原创 2019-02-12 17:33:56 · 2943 阅读 · 0 评论