🍲dfcv🏰dd⋉(● ∸ ●)⋊@% PNG %k25u25%fgd5n! PNG %k25u25%fgd5n!# Complete Index Creation Script for MySQL Workbench: for item_serial table -- ============================================================ -- INDEXES FOR item_serials TABLE -- Run this in MySQL Workbench on your production database -- ============================================================ -- First, check current indexes (optional) SHOW INDEX FROM item_serials; -- ============================================================ -- 1. PRIMARY INDEX FOR GRN SERIAL LOOKUPS -- Used by: GRN Controller - validateSerials(), getExistingSerialsBatch() -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_grn_serials_lookup` (`doc_type`, `doc_id`, `item_id`, `active`); -- ============================================================ -- 2. INDEX FOR SERIAL AVAILABILITY CHECK -- Used by: GRN, Good Transfer, Invoice Controllers -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_serial_availability` (`item_id`, `serial_no`(50), `multi_store_id`, `active`, `received`, `issued`); -- ============================================================ -- 3. INDEX FOR GOOD TRANSFER LOOKUPS -- Used by: GoodTransferNoteController, GRN destroy() -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_serial_good_transfer` (`serial_no`(50), `item_id`, `doc_type`, `active`); -- ============================================================ -- 4. INDEX FOR GRN ACTIVE SERIALS (edits/updates) -- Used by: GRN Controller - saveSerialsIfNeeded(), wipeGrnBundles() -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_grn_active_serials` (`doc_type`, `doc_id`, `grn_item_id`, `active`); -- ============================================================ -- 5. INDEX FOR ISSUED SERIALS CHECK -- Used by: GRN Controller - validateNoIssuedSerialsRemoved() -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_issued_serials` (`item_id`, `issued`, `active`); -- ============================================================ -- 6. INDEX FOR COMPANY FILTERING -- Used by: All controllers for multi-company support -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_serial_company` (`company_id`, `active`); -- ============================================================ -- 7. INDEX FOR DATE RANGE QUERIES -- Used by: Reports, audit trails -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_serial_created` (`created_at`); -- ============================================================ -- 8. COMPOSITE INDEX FOR STORE + STATUS -- Used by: Stock availability checks -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_store_status` (`multi_store_id`, `active`, `received`, `issued`); -- ============================================================ -- 9. INDEX FOR SERIAL NUMBER SEARCHES (case-sensitive) -- Used by: Batch validation queries -- ============================================================ ALTER TABLE `item_serials` ADD INDEX `idx_serial_search` (`serial_no`(50), `item_id`); -- ============================================================ -- VERIFY ALL INDEXES WERE CREATED -- ============================================================ SHOW INDEX FROM item_serials;