FLUSH TABLES; CREATE TABLE IF NOT EXISTS `list_numbers_{ID}` ( `ln_id` bigint unsigned NOT NULL auto_increment, `list_id` int default NULL, `ln_number` bigint NOT NULL, `ln_loc` varchar(10) default NULL, `ln_state` varchar(2) default NULL, `ln_npa` smallint default NULL, `ln_nxx` smallint default NULL, `ln_nnnn` int default NULL, `ln_ocn` varchar(5) default NULL, `ln_lata` mediumint default NULL, `ln_tier` varchar(20) default NULL, `ln_rate` decimal(6,4) default NULL, PRIMARY KEY (`ln_id`), INDEX `NUM1{ID}` (`list_id`), INDEX `NUM2{ID}` (`ln_npa`), INDEX `NUM3{ID}` (`ln_state`), UNIQUE INDEX `NUM4{ID}` (`ln_number`), UNIQUE INDEX `NUM5{ID}` (`ln_number`, `ln_npa`, `list_id`), UNIQUE INDEX `NUM6{ID}` (`ln_number`, `ln_state`, `list_id`), UNIQUE INDEX `NUM7{ID}` (`ln_number`, `ln_npa`), UNIQUE INDEX `NUM8{ID}` (`ln_number`, `ln_state`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; analyze table list_numbers_{ID}; delete from templist_{ID} Where number in (select ln_number from list_numbers_{ID}); alter table templist_{ID} engine = MyISAM; ALTER TABLE list_numbers_{ID} DISABLE KEYS; LOCK TABLES list_numbers_{ID} WRITE, templist_{ID} READ; insert into list_numbers_{ID} (ln_number, list_id, ln_loc, ln_state, ln_npa, ln_nxx, ln_nnnn, ln_ocn, ln_lata, ln_tier, ln_rate) select distinct number, (Select {list_id}), loc, state, npa, nxx, nnnn, ocn, lata, tier, rate from templist_{ID}; UNLOCK TABLES; ALTER TABLE list_numbers_{ID} ENABLE KEYS;