| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- -- 市场移动端催缴/缴费查询索引(MySQL 5.7)。
- -- 同名索引定义不一致时重建,重复执行保持幂等。
- SET @schema_name = DATABASE();
- SET @index_name = 'idx_biz_protocol_payment_schedule_market_scope';
- SELECT GROUP_CONCAT(column_name ORDER BY seq_in_index SEPARATOR ','),
- MIN(non_unique),
- MAX(non_unique),
- SUM(CASE WHEN sub_part IS NOT NULL THEN 1 ELSE 0 END),
- COUNT(DISTINCT index_type),
- MIN(index_type)
- INTO @index_columns,
- @index_non_unique_min,
- @index_non_unique_max,
- @index_prefix_columns,
- @index_type_count,
- @index_type
- FROM information_schema.statistics
- WHERE table_schema = @schema_name
- AND table_name = 'biz_protocol_payment_schedule'
- AND index_name = @index_name;
- SET @ddl = CASE
- WHEN @index_columns = 'tenant_no,sample_payment_id,del_flag'
- AND @index_non_unique_min = 1
- AND @index_non_unique_max = 1
- AND @index_prefix_columns = 0
- AND @index_type_count = 1
- AND @index_type = 'BTREE' THEN 'SELECT 1'
- WHEN @index_columns IS NULL THEN
- 'ALTER TABLE biz_protocol_payment_schedule ADD INDEX idx_biz_protocol_payment_schedule_market_scope (tenant_no, sample_payment_id, del_flag)'
- ELSE
- 'ALTER TABLE biz_protocol_payment_schedule DROP INDEX idx_biz_protocol_payment_schedule_market_scope, ADD INDEX idx_biz_protocol_payment_schedule_market_scope (tenant_no, sample_payment_id, del_flag)'
- END;
- PREPARE stmt FROM @ddl;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @index_name = 'idx_biz_protocol_payment_transfer_market_scope';
- SELECT GROUP_CONCAT(column_name ORDER BY seq_in_index SEPARATOR ','),
- MIN(non_unique),
- MAX(non_unique),
- SUM(CASE WHEN sub_part IS NOT NULL THEN 1 ELSE 0 END),
- COUNT(DISTINCT index_type),
- MIN(index_type)
- INTO @index_columns,
- @index_non_unique_min,
- @index_non_unique_max,
- @index_prefix_columns,
- @index_type_count,
- @index_type
- FROM information_schema.statistics
- WHERE table_schema = @schema_name
- AND table_name = 'biz_protocol_payment_transfer'
- AND index_name = @index_name;
- SET @ddl = CASE
- WHEN @index_columns = 'tenant_no,schedule_id,del_flag'
- AND @index_non_unique_min = 1
- AND @index_non_unique_max = 1
- AND @index_prefix_columns = 0
- AND @index_type_count = 1
- AND @index_type = 'BTREE' THEN 'SELECT 1'
- WHEN @index_columns IS NULL THEN
- 'ALTER TABLE biz_protocol_payment_transfer ADD INDEX idx_biz_protocol_payment_transfer_market_scope (tenant_no, schedule_id, del_flag)'
- ELSE
- 'ALTER TABLE biz_protocol_payment_transfer DROP INDEX idx_biz_protocol_payment_transfer_market_scope, ADD INDEX idx_biz_protocol_payment_transfer_market_scope (tenant_no, schedule_id, del_flag)'
- END;
- PREPARE stmt FROM @ddl;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
|