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