| New file |
| | |
| | | -- ===================================================== |
| | | -- Pagination COUNT Optimization: Add time-column indexes |
| | | -- to all large log/operation tables for faster COUNT queries |
| | | -- and ORDER BY performance. |
| | | -- ===================================================== |
| | | |
| | | -- Tier 1: Operation log tables (ordered by send_time, no existing index) |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_bas_crnp_opt' |
| | | AND INDEX_NAME = 'idx_crnp_opt_send_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_bas_crnp_opt` ADD INDEX `idx_crnp_opt_send_time` (`send_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_bas_rgv_opt' |
| | | AND INDEX_NAME = 'idx_rgv_opt_send_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_bas_rgv_opt` ADD INDEX `idx_rgv_opt_send_time` (`send_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_bas_station_opt' |
| | | AND INDEX_NAME = 'idx_station_opt_send_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_bas_station_opt` ADD INDEX `idx_station_opt_send_time` (`send_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_bas_dual_crnp_opt' |
| | | AND INDEX_NAME = 'idx_dual_crnp_opt_send_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_bas_dual_crnp_opt` ADD INDEX `idx_dual_crnp_opt_send_time` (`send_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | -- Tier 1: System log tables |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_wrk_mast_log' |
| | | AND INDEX_NAME = 'idx_wrk_mast_log_modi_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_wrk_mast_log` ADD INDEX `idx_wrk_mast_log_modi_time` (`modi_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'man_api_log' |
| | | AND INDEX_NAME = 'idx_api_log_create_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `man_api_log` ADD INDEX `idx_api_log_create_time` (`create_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'sys_http_request_log' |
| | | AND INDEX_NAME = 'idx_http_request_log_create_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `sys_http_request_log` ADD INDEX `idx_http_request_log_create_time` (`create_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'sys_operate_log' |
| | | AND INDEX_NAME = 'idx_operate_log_create_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `sys_operate_log` ADD INDEX `idx_operate_log_create_time` (`create_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | -- Tier 2: Error log tables (no existing index on start_time) |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_bas_crnp_err_log' |
| | | AND INDEX_NAME = 'idx_crnp_err_log_start_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_bas_crnp_err_log` ADD INDEX `idx_crnp_err_log_start_time` (`start_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_bas_rgv_err_log' |
| | | AND INDEX_NAME = 'idx_rgv_err_log_start_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_bas_rgv_err_log` ADD INDEX `idx_rgv_err_log_start_time` (`start_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |
| | | |
| | | SET @idx_exists := ( |
| | | SELECT COUNT(*) FROM information_schema.STATISTICS |
| | | WHERE TABLE_SCHEMA = DATABASE() |
| | | AND TABLE_NAME = 'asr_bas_dual_crnp_err_log' |
| | | AND INDEX_NAME = 'idx_dual_crnp_err_log_start_time' |
| | | ); |
| | | SET @sql := IF(@idx_exists = 0, |
| | | 'ALTER TABLE `asr_bas_dual_crnp_err_log` ADD INDEX `idx_dual_crnp_err_log_start_time` (`start_time`)', |
| | | 'SELECT 1'); |
| | | PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; |