- 查询条件中必须包含分区键,否则MySQL无法定位所需数据所在的分区。
- 查询时应该避免使用全表扫描,提高查询效率。
下面展示如何查询MySQL数据库分区:
-- 创建分区表 CREATE TABLE orders ( order_id INT NOT NULL, customer_id INT NOT NULL, order_date DATE NOT NULL ) PARTITION BY RANGE (YEAR(order_date)) ( PARTITION p0 VALUES LESS THAN (2010), PARTITION p1 VALUES LESS THAN (2011), PARTITION p2 VALUES LESS THAN (2012), PARTITION p3 VALUES LESS THAN MAXVALUE ); -- 插入数据 INSERT INTO orders VALUES (1, 1001, '2010-01-01'); INSERT INTO orders VALUES (2, 1002, '2011-02-15'); INSERT INTO orders VALUES (3, 1003, '2012-05-12'); INSERT INTO orders VALUES (4, 1004, '2013-09-20'); INSERT INTO orders VALUES (5, 1005, '2014-11-11'); -- 查询分区表 -- 查询2010年以前的订单 SELECT * FROM orders PARTITION (p0) WHERE order_date= '2011-01-01' AND order_date< '2012-01-01';
以上代码演示了如何创建分区表和查询分区表。要注意的是,在查询时需要指定具体的分区,否则MySQL会扫描所有分区表,效率很低。