Для работы я имею дело с большой базой данных (160 миллионов + строк в год, данные за 10 лет) и имею затруднения; Большой процент загружаемых нами данных - это нулевые данные, и я бы хотел, чтобы они не загружались.
Данные, о которых идет речь, носят пространственный характер, поэтому у меня есть одна таблица, например:
idLocations (Auto-increment int, PK)
X (float)
Y (foat)
Alwaysignore (Bool)
Который используется в качестве ссылки во второй таблице, например:
idLocations (Int, PK, "FK")
idDates (Int, PK, "FK")
DATA1 (float)
DATA2 (float)
...
DATA7 (float)
Итак, в идеале я хотел бы найти метод, где я мог бы сделать что-то вроде:
INSERT INTO tblData(idLocations, idDates, DATA1, ..., DATA7) VALUES (...), ..., (...)
WHERE VALUES(idLocations) NOT LIKE (SELECT FROM tblLocation WHERE alwaysignore=TRUE
ON DUPLICATE KEY UPDATE DATA1=VALUES(DATA1)
Итак, для моей большой партии входных данных (250 значений в блоке) игнорируйте вставки, где idLocations совпадает со значениями idLocations, помеченными Alwaysignore.
У кого-нибудь есть предложения?
Приветствия.
-Stuart
Другие подробности: Запуск MySQL на полуотделенном компьютере, движок MyISAM для таблиц.