mysql分区函数_mysql 分区可用函数

mysql分区函数_mysql 分区可用函数DAY()DAYOFMONTH()DAYOFWEEK()DAYOFYEAR()DATEDIFF()EXTRACT()HOUR()MICROSECOND()MINUTE()MOD()MONTH()QUARTER()SECOND()TIME_TO_SEC()TO_DAYS()WEEKDAY()YEAR()YEARWEEK()等当然,还有FLOOR(),CEILING()等,前提是使用这两个分区函数…

大家好,又见面了,我是你们的朋友全栈君。

DAY()

DAYOFMONTH()

DAYOFWEEK()

DAYOFYEAR()

DATEDIFF()

EXTRACT()

HOUR()

MICROSECOND()

MINUTE()

MOD()

MONTH()

QUARTER()

SECOND()

TIME_TO_SEC()

TO_DAYS()

WEEKDAY()

YEAR()

YEARWEEK() 等

当然,还有FLOOR(),CEILING() 等,前提是使用这两个分区函数的分区健必须是整型。

按星期分区的表  WEEKDAY从0开始

CREATE TABLE `bage_visitlist` (

`ipaddress` varchar(16) NOT NULL DEFAULT ”,

`visitfrom` varchar(16) NOT NULL DEFAULT ”,

`visittimes` int(10) unsigned NOT NULL DEFAULT ‘0’,

`visittime` datetime NOT NULL DEFAULT ‘2013-01-01 00:00:00’,

`deviceype` varchar(16) NOT NULL DEFAULT ”

) ENGINE=MyISAM DEFAULT CHARSET=utf8

PARTITION BY LIST (WEEKDAY(visittime))

(PARTITION d1 VALUES IN (0) ENGINE = MyISAM,

PARTITION d2 VALUES IN (1) ENGINE = MyISAM,

PARTITION d3 VALUES IN (2) ENGINE = MyISAM,

PARTITION d4 VALUES IN (3) ENGINE = MyISAM,

PARTITION d5 VALUES IN (4) ENGINE = MyISAM,

PARTITION d6 VALUES IN (5) ENGINE = MyISAM,

PARTITION d7 VALUES IN (6) ENGINE = MyISAM) ;

d1-d7有需要可以换成各个星期的缩写

星期一 MON

星期二 TUE

星期三 WED

星期四 THU

星期五 FRI

星期六 SAT

星期天 SUN

测试发现,分区插入是分区的,但是EXPLAIN  PARTITIONS跟踪发现都是全区扫描的,条件里加入WEEKDAY(visittime)这样的也不行

但是如果你插入的datetime字段是不带时间只有日期的话,where条件里没出现函数只用=来判断日期,是可以分区搜索的

分区应该和索引一样,一但where中出现函数,就会全区扫描

下面的表PARTITION BY LIST (month(create_time)),Explain结果不太乐观

mysql> Explain partitions select * from rec_pay where create_time = ‘2014-06-01 00:00:00’ limit 20;

+—-+————-+———+————+——+—————+——+———+——+——–+————-+

| id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows   | Extra       |

+—-+————-+———+————+——+—————+——+———+——+——–+————-+

|  1 | SIMPLE      | rec_pay | p6         | ALL  | NULL          | NULL | NULL    | NULL | 176370 | Using where |

+—-+————-+———+————+——+—————+——+———+——+——–+————-+

mysql> Explain partitions select * from rec_pay where create_time < ‘2014-05-01 00:00:00’ and create_time > ‘2014-04-03 00:00:00’ limit 20;

+—-+————-+———+——————————————-+——+—————+——+———+——+———+————-+

| id | select_type | table   | partitions                                | type | possible_keys | key  | key_len | ref  | rows    | Extra       |

+—-+————-+———+——————————————-+——+—————+——+———+——+———+————-+

|  1 | SIMPLE      | rec_pay | p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 | ALL  | NULL          | NULL | NULL    | NULL | 2517770 | Using where |

+—-+————-+———+——————————————-+——+—————+——+———+——+———+————-+

各个分区行数查询

SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name=’table_name’

mysql explain字段说明

点击(此处)折叠或打开

EXPLAIN字段:

1 Table:显示这一行的数据是关于哪张表的

2 possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句

3 key:实际使用的索引。如果为NULL,则没有使用索引。MYSQL很少会选择优化不足的索引,此时可以在SELECT语句中使用USE INDEX(index)来强制使用一个索引或者用IGNORE INDEX(index)来强制忽略索引

4 key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好

5 ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

6 rows:MySQL认为必须检索的用来返回请求数据的行数

7 type:这是最重要的字段之一,显示查询使用了何种类型。从最好到最差的连接类型为system、const、eq_reg、ref、range、index和ALL

system、const:可以将查询的变量转为常量. 如id=1; id为 主键或唯一键.

eq_ref:访问索引,返回某单一行的数据.(通常在联接时出现,查询使用的索引为主键或惟一键)

ref:访问索引,返回某个值的数据.(可以返回多行) 通常使用=时发生

range:这个连接类型使用索引返回一个范围中的行,比如使用>或

index:以索引的顺序进行全表扫描,优点是不用排序,缺点是还要全表扫描

ALL:全表扫描,应该尽量避免

8 Extra:关于MYSQL如何解析查询的额外信息,主要有以下几种

using index:只用到索引,可以避免访问表.

using where:使用到where来过虑数据. 不是所有的where clause都要显示using where. 如以=方式访问索引.

using tmporary:用到临时表

using filesort:用到额外的排序. (当使用order by v1,而没用到索引时,就会使用额外的排序)

range checked for eache record(index map:N):没有好的索引.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133092.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月9日 下午7:36
下一篇 2022年6月9日 下午7:36


相关推荐

  • 模糊数学 1、模糊集、隶属度函数、如何确定隶属度函数

    模糊数学 1、模糊集、隶属度函数、如何确定隶属度函数nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 集合的概念 一些具有相同特征的不同对象构成的全体 也称集或者经典集合 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 经典集合的特征函数 和模糊集的隶属度函数一样 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp amp nb

    2026年3月20日
    1
  • 2D网络游戏(2d网络游戏大全列表)

    2D网络游戏开发(网络篇)(一) 作者:akinggw “2D网游开发”,我有时都觉得这个标题包含的内容太多,要实现起来也太难。于是,我决定将它分门别类,我按照我要实现的一个网络游戏将它分成下面几个部分: l      客户端l      网络端l      服务器端l      网页端 我们来讲解一下,我们分别要在每个端口完成什么内容: 

    2022年4月16日
    103
  • poj 2762 Going from u to v or from v to u? (推断它是否是一个薄弱环节图)

    poj 2762 Going from u to v or from v to u? (推断它是否是一个薄弱环节图)

    2022年1月4日
    41
  • 算法总结——大整数乘法

    算法总结——大整数乘法问题描述求两个不超过200位的非负整数的积。输入数据有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出要求一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。 输入样例1234567890098765432100输出样例1219326311126352690000解题思路在下面的例子程序中,用

    2022年6月2日
    45
  • mfc控件工具栏怎么打开_Qt界面库

    mfc控件工具栏怎么打开_Qt界面库BCGControlBarProfessionalforMFC和BCGSuiteforMFCv33.0正式发布!此版本包括对每个显示器DPI感知的支持等,欢迎下载相关产品体验~

    2022年10月8日
    7
  • springData中的@Query和@Modifying

    springData中的@Query和@ModifyingQuery 和 Modifying 这两个注解使用过程如下 Query updateArticl 2whereid 1 默认是只读事务 Modifying 增删改的时候加 SpringDataJP 不自动提供事务了 没事务了 手动事务 voidupdateSt Stringid Stringstate

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号