空值我有一个表:分区通过与MySQL
CREATE TABLE `NewTable` (
`IBLOCK_ELEMENT_ID` int(11) NOT NULL ,
`PROPERTY_1836` int(11) NULL DEFAULT NULL ,
`DESCRIPTION_1836` varchar(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL ,
`PROPERTY_1837` int(11) NULL DEFAULT 0 ,
`DESCRIPTION_1837` varchar(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL ,
`PROPERTY_1838` decimal(18,4) NULL DEFAULT NULL ,
`DESCRIPTION_1838` varchar(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL ,
`PROPERTY_3139` int(11) NULL DEFAULT 0 ,
`DESCRIPTION_3139` varchar(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL ,
`PROPERTY_3173` decimal(18,4) NULL DEFAULT NULL ,
`DESCRIPTION_3173` varchar(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`IBLOCK_ELEMENT_ID`),
INDEX `ix_perf_b_iblock_element_pr_1` (`PROPERTY_1837`) USING BTREE ,
INDEX `ix_perf_b_iblock_element_pr_2` (`PROPERTY_1836`) USING BTREE ,
INDEX `ix_perf_b_iblock_element_pr_3` (`PROPERTY_3139`) USING BTREE
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=cp1251 COLLATE=cp1251_general_ci
ROW_FORMAT=COMPACT;
而且随着条件的查询:
WHERE PROPERTY_3139 IS NULL
我不能改变一个表或查询。但我知道,如果我将表分成2个分区 - 只选择可为空值的查询会更快。
我可以用这种方法做什么? NULL和NOT NULL不是一个范围,我不能将它用作值列表。
如果您无法更改表格,您希望如何添加分区? – 2015-04-01 13:05:36
我对错误表示歉意。我无法改变表格的结构。但分区不会影响查询的任何更改。 – 2015-04-01 13:07:58
为什么减去这个问题? – 2015-04-01 15:17:00