|
|
@@ -0,0 +1,76 @@
|
|
|
+-- ORDER-FLOW-S8-INTEGRATED-DOMAIN-RESET-1 t1c
|
|
|
+-- Target table: ado_s8_exception
|
|
|
+-- Purpose: add 3 indexes for order-flow related exception queries
|
|
|
+-- (related_object_code aggregation, order_flow_code filter,
|
|
|
+-- related+flow joint lookup for chain drill-down).
|
|
|
+--
|
|
|
+-- Path: A (SugarIndex Attribute in AdoS8Exception.cs) is primary.
|
|
|
+-- This SQL file is path B: aidopdev fallback if CodeFirst skips
|
|
|
+-- pre-existing tables. Idempotent via pre-check SELECT against
|
|
|
+-- INFORMATION_SCHEMA.STATISTICS (MySQL 8 has no CREATE INDEX IF NOT EXISTS).
|
|
|
+--
|
|
|
+-- Usage:
|
|
|
+-- 1. Run the 3 pre-check SELECTs below; skip the matching CREATE INDEX
|
|
|
+-- when the SELECT returns >0 rows.
|
|
|
+-- 2. Or run the 3 CREATE INDEX statements directly; MySQL will error
|
|
|
+-- "Duplicate key name" if the index already exists, which is safe.
|
|
|
+-- 3. This file does NOT touch column types, data rows, or other indexes.
|
|
|
+
|
|
|
+-- =========================================================================
|
|
|
+-- Pre-check (run first; non-destructive)
|
|
|
+-- =========================================================================
|
|
|
+
|
|
|
+-- Pre-check A: idx_s8_exception_related_object_code
|
|
|
+SELECT COUNT(*) AS exists_related_object_code
|
|
|
+FROM INFORMATION_SCHEMA.STATISTICS
|
|
|
+WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 'ado_s8_exception'
|
|
|
+ AND INDEX_NAME = 'idx_s8_exception_related_object_code';
|
|
|
+
|
|
|
+-- Pre-check B: idx_s8_exception_order_flow
|
|
|
+SELECT COUNT(*) AS exists_order_flow
|
|
|
+FROM INFORMATION_SCHEMA.STATISTICS
|
|
|
+WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 'ado_s8_exception'
|
|
|
+ AND INDEX_NAME = 'idx_s8_exception_order_flow';
|
|
|
+
|
|
|
+-- Pre-check C: idx_s8_exception_related_flow
|
|
|
+SELECT COUNT(*) AS exists_related_flow
|
|
|
+FROM INFORMATION_SCHEMA.STATISTICS
|
|
|
+WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 'ado_s8_exception'
|
|
|
+ AND INDEX_NAME = 'idx_s8_exception_related_flow';
|
|
|
+
|
|
|
+-- =========================================================================
|
|
|
+-- Index creation (run each only when its pre-check returned 0)
|
|
|
+-- =========================================================================
|
|
|
+
|
|
|
+-- Index 1: order-by-order aggregation (exceptionCount per order_code).
|
|
|
+-- Columns: tenant_id, factory_id, related_object_code, is_deleted
|
|
|
+CREATE INDEX idx_s8_exception_related_object_code
|
|
|
+ON ado_s8_exception (tenant_id, factory_id, related_object_code, is_deleted);
|
|
|
+
|
|
|
+-- Index 2: order-flow-level filter (chain page baseline / drill-down).
|
|
|
+-- Columns: tenant_id, factory_id, order_flow_code, status, is_deleted
|
|
|
+CREATE INDEX idx_s8_exception_order_flow
|
|
|
+ON ado_s8_exception (tenant_id, factory_id, order_flow_code, status, is_deleted);
|
|
|
+
|
|
|
+-- Index 3: joint key for per-order per-stage lookup.
|
|
|
+-- Columns: tenant_id, factory_id, related_object_code, order_flow_code
|
|
|
+CREATE INDEX idx_s8_exception_related_flow
|
|
|
+ON ado_s8_exception (tenant_id, factory_id, related_object_code, order_flow_code);
|
|
|
+
|
|
|
+-- =========================================================================
|
|
|
+-- Post-check (run after creation; expect 3 rows total)
|
|
|
+-- =========================================================================
|
|
|
+
|
|
|
+SELECT INDEX_NAME, GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) AS cols
|
|
|
+FROM INFORMATION_SCHEMA.STATISTICS
|
|
|
+WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 'ado_s8_exception'
|
|
|
+ AND INDEX_NAME IN (
|
|
|
+ 'idx_s8_exception_related_object_code',
|
|
|
+ 'idx_s8_exception_order_flow',
|
|
|
+ 'idx_s8_exception_related_flow'
|
|
|
+ )
|
|
|
+GROUP BY INDEX_NAME;
|