-- =====================================================
|
-- 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;
|