我被要求帮助检查表格并提高性能。该表是一个有 2.000.000 行的大表,并且正在快速增长。有很多用户正在使用此表进行大量更新/插入和删除查询。
也许你可以给我一些好的建议来提高性能和真实性
这是表定义:
创建表`计算`( `GROUP_LINE_ID` BIGINT(250) NOT NULL DEFAULT '0', `GROUP_LINE_PARENT_ID` BIGINT(250) NOT NULL DEFAULT '0', `MOEDER_LINE_CODE` BIGINT(250) NOT NULL DEFAULT '0', `CALC_ID` BIGINT(250) NOT NULL DEFAULT '0', `GROUP_ID` BIGINT(250) NOT NULL DEFAULT '0', `CODE` VARCHAR(250) 默认为空, `DESCRIPTION` VARCHAR(250) 默认空值, `RAW_AMOUNT` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `AMOUNT` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `UNIT` VARCHAR(100) 默认为空, `MEN_HOURS` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `PRICE_PER_UNIT` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `CONTRACTOR_UNIT` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `POSTS_PER_UNIT` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `SORT_INDEX` BIGINT(250) NOT NULL DEFAULT '0', `FACTOR` DECIMAL(50,4) NOT NULL DEFAULT '0.0000', `FACTOR_TYPE` INT(2) NOT NULL DEFAULT '0', `ROUND_AT` DECIMAL(50,2) NOT NULL DEFAULT '0.00', `MATERIAL_ID` BIGINT(250) NOT NULL DEFAULT '0', `MINIMUM` DECIMAL(50,2) NOT NULL DEFAULT '0.00', `LINE_TYPE` INT(1) NOT NULL DEFAULT '0', `ONDERDRUKT` INT(5) NOT NULL DEFAULT '0', `MARKED` INT(5) NOT NULL DEFAULT '0', `IS_TEXT` INT(5) NOT NULL DEFAULT '0', `BRUTO_PRICE` DECIMAL(20,2) NOT NULL DEFAULT '0.00', `AMOUNT_DISCOUNT` DECIMAL(20,3) NOT NULL DEFAULT '0.000', `FROM_CONSTRUCTOR` INT(5) NOT NULL DEFAULT '0', `CHANGE_DATE` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `BEREKENING_VALUE` INT(5) NOT NULL DEFAULT '0', `MAATVOERING_ID` BIGINT(250) NOT NULL DEFAULT '0', `KOZIJN_CALC_ID` BIGINT(250) NOT NULL DEFAULT '0', `IS_KOZIJN_CALC_TOTALS` INT(5) NOT NULL DEFAULT '0', `EAN_CODE` VARCHAR(150) 默认为空, `UURLOON_ID` BIGINT(20) NOT NULL DEFAULT '0', `ORG_PRICE_PER_UNIT` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `ORG_CONTRACTOR_UNIT` DECIMAL(50,3) NOT NULL DEFAULT '0.000', `BTWCode` INT(5) NOT NULL DEFAULT '0', `IS_CONTROLE_GETAL` INT(5) NOT NULL DEFAULT '0', `AttentieRegel` INT(5) NOT NULL DEFAULT '0', `KozijnSelectionRowId` BIGINT(250) NOT NULL DEFAULT '0', `OfferteTekst` 文本, `VerliesFactor` DECIMAL(15,4) NOT NULL DEFAULT '0.0000', 主键(`GROUP_LINE_ID`), KEY `GROUP_LINE_PARENT_ID`(`GROUP_LINE_PARENT_ID`), KEY `MOEDER_LINE_CODE`(`MOEDER_LINE_CODE`), KEY `CALC_ID`(`CALC_ID`), KEY `GROUP_ID`(`GROUP_ID`), KEY `MATERIAL_ID`(`MATERIAL_ID`), KEY `MAATVOERING_ID`(`MAATVOERING_ID`), KEY `KOZIJN_CALC_ID`(`KOZIJN_CALC_ID`), 键 `IS_KOZIJN_CALC_TOTALS` (`IS_KOZIJN_CALC_TOTALS`) ) 引擎=MyISAM 默认字符集=utf8;
在我看来
- 将表引擎更改为 InnoDB
- bigint(250) 可以改成 bigint(10) 的 int(10) 吗?
请给我一些建议