MySQL的經典用法(四)----大幅度提高性能方案,分區表

下面就筆者工作中遇到的時間問題,模擬一下情況對大家進行介紹. 工作中仍然是海量數據出現的情況.每年大概會有幾億條記錄.而且數據的時效性比較強.但歷史數據仍然要求保留.這個時候經過分析和研究,最終決定通過時間字段進行分區.下面是分區表的創建代碼.讀者門在插入了不同年份時間段以後,可以時間字段爲條件進行查詢,可以看到數據庫掃描過的區段. Sql代碼 CREATE TABLE part_data (c1 int default NULL, c2 varchar(30) default NULL, c3 date default NULL) partition by range (to_days(c3)) (PARTITION p0 VALUES LESS THAN (to_days('1995-01-01')), PARTITION p1 VALUES LESS THAN (to_days('1996-01-01')) , PARTITION p2 VALUES LESS THAN (to_days('1997-01-01')) , PARTITION p3 VALUES LESS THAN (to_days('1998-01-01')) , PARTITION p4 VALUES LESS THAN (to_days('1999-01-01')) , PARTITION p5 VALUES LESS THAN (to_days('2000-01-01')) , PARTITION p6 VALUES LESS THAN (to_days('2001-01-01')) , PARTITION p7 VALUES LESS THAN (to_days('2002-01-01')) , PARTITION p8 VALUES LESS THAN (to_days('2003-01-01')) , PARTITION p9 VALUES LESS THAN (to_days('2004-01-01')) , PARTITION p10 VALUES LESS THAN (to_days('2010-01-01')), PARTITION p11 VALUES LESS THAN MAXVALUE ); CREATE TABLE part_data (c1 int default NULL, c2 varchar(30) default NULL, c3 date default NULL) partition by range (to_days(c3)) (PARTITION p0 VALUES LESS THAN (to_days('1995-01-01')), PARTITION p1 VALUES LESS THAN (to_days('1996-01-01')) , PARTITION p2 VALUES LESS THAN (to_days('1997-01-01')) , PARTITION p3 VALUES LESS THAN (to_days('1998-01-01')) , PARTITION p4 VALUES LESS THAN (to_days('1999-01-01')) , PARTITION p5 VALUES LESS THAN (to_days('2000-01-01')) , PARTITION p6 VALUES LESS THAN (to_days('2001-01-01')) , PARTITION p7 VALUES LESS THAN (to_days('2002-01-01')) , PARTITION p8 VALUES LESS THAN (to_days('2003-01-01')) , PARTITION p9 VALUES LESS THAN (to_days('2004-01-01')) , PARTITION p10 VALUES LESS THAN (to_days('2010-01-01')), PARTITION p11 VALUES LESS THAN MAXVALUE ); 分區查詢,可以查看掃描過的區段.當然要加上where子句,以c3時間爲條件進行檢索.若不使用時間字段,分區將失去作用. Sql代碼 explain partitions select * from part_data/G
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章