MySQL: Opret grupper, og opdater felter i rimelig stor DB
Hey,Jeg har en city db med 2.700.000+ records.
city_id int(11) Nej
city_status tinyint(3) Nej 0
city_group_id int(11) Nej 0
city_group_sort int(11) Nej 0
city_iata_code char(3) Nej
city_name varchar(255) Nej
city_name_plain varchar(255) Nej
city_country_code char(2) Nej
city_state_code varchar(10) Nej
city_latitude varchar(255) Nej 0
city_longitude varchar(255) Nej 0
city_population int(11) Nej 0
Indeks:
Nøglenavn Datatype Kardinalitet Feltnavn
PRIMARY PRIMARY 2699355 city_id
city_iatacode INDEX 1 city_iata_code
city_name INDEX 2699355 city_name
city_country_code INDEX 230 city_country_code
city_name_plain INDEX 2699355 city_name_plain
city_status INDEX 1 city_status
city_latitude INDEX 245395 city_latitude
city_longitude INDEX 385622 city_longitude
city_population INDEX 28414 city_population
Pladsforbrug:
Datatype Benyttelse
Data 153.693 KB
Indeks 178.483 KB
Total 332.176 KB
Række-statistik:
Erklæringer Værdi
Format dynamisk
Rækker 2.699.355
Rækkelængde ø 58
Rækkestørrelse ø 126 Bytes
Næste Autoindex 2.699.356
Oprettelse 27/05 2008 kl. 08:49:28
Sidste opdatering 27/05 2008 kl. 08:49:55
Sidste check 27/05 2008 kl. 08:53:21
Nogen byer ligger dobbelt, bare med andre navne - Fx.
København
Copenhagen
og så
Amager
Fælles for de byer er at de har samme geo-cordinater. Jeg vil derfor gruppere dem på dem og for at de informationer og andre fælles ting ikke skal ligge og fylde dobbelt i city tabellen vil jeg lave en city_group tabel der kan indeholde alle sådanne ting.
city_group_id int(11) Nej
city_group_status tinyint(3) Nej 0
city_iata_code char(3) Nej
city_country_code char(2) Nej
city_state_code varchar(255) Nej
city_latitude varchar(255) Nej
city_longitude varchar(255) Nej
Og så referere i city tabellen til city_group_id, og sætte city_group_sort efter population således at København, hvilket har en population højere end amager prioriteres højere. Population skal derefter bare skrottes.
Har prøvet at lave nogen PHP scripts der kan udføre denne opgave dog uden noget særligt brugbart.
Bare det at nulstille city tabellen ved at sætte city_group_id=0 og city_group_sort=0 viser sig at være en tidskrævende opgave.
Så jeg belønner alle der kan komme med rigtigt brugbart input til denne problem stilling.