Как передать и обработать данные (PHP) в базу данных (MySQL) для лучшей производительности?

Я создал систему php, которая генерирует 150 «серийный номер» для каждого продукта.
Теперь я хочу сохранить эти серийные номера в базе данных. Я нашел несколько способов сделать это:

  1. Создать имя таблицы products_serialNumber и сохранить каждый серийный номер в 1 записи и связать его с продуктами, используя product_id ключ.

Если я сделаю это, у меня будет много данных, которые никто не сможет использовать. Но получение данных таким способом проще и быстрее.

  1. Создать имя таблицы product_serialNumbers и сохраните массив серийных номеров для каждого продукта и снова используйте ключ «product_id».

Если мне так нравится, у меня будет запись серийных номеров для каждого продукта, но я должен использовать больше foreach а также for loop функции для извлечения массива данных и переменных, чтобы использовать там, где мне нужно, и использовать много памяти. Я ограничен до 64 м, используя память.

0

Решение

Вы можете хранить JSON …

Нормализация — это метод, используемый для оптимизации структуры базы данных. Правило «Первая нормальная форма» (1NF) определяет, что каждый столбец должен содержать одно значение, что нарушается при хранении многозначных документов JSON.

Создать таблицу с полем JSON

CREATE TABLE `product_serialNumbers` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`serialNumbers` json DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Добавление данных JSON

INSERT INTO `product_serialNumbers` (`title`, `serialNumbers`)
VALUES (
'ECMAScript 2015: A SitePoint Anthology',
'["ac111", "ab177", "ac14521"]'
);

JSON также может быть создан с помощью:

//returns [1, 2, "abc"]:
SELECT JSON_ARRAY(1, 2, 'abc');

//returns {"a": 1, "b": 2}:
SELECT JSON_OBJECT('a', 1, 'b', 2);

//returns ["a", 1, {"key": "value"}]:
SELECT JSON_MERGE('["a", 1]', '{"key": "value"}');

Поиск данных JSON

//all product_serialNumbers with the 'ac14521' serialNumbers:
SELECT * FROM `product_serialNumbers`
WHERE JSON_CONTAINS(serialNumbers, '["ac14521"]');
2

Другие решения

Если вы используете ORM базы данных, такие как Mysql. Наилучшим выбором является использование решения 1, потому что хранение и выборка связанных данных является наиболее важной причиной использования баз данных ORM.
Но решение 2 хорошо, когда вы используете базы данных NoSql, такие как MongoDB или другие базы данных базы документов.

1

Решение 1 хорошо, потому что в обоих случаях будет занято пространство данных.

Если вы выберете Решение 2 или сохраните его в json, каждый раз, когда вы извлекаете данные, потребуется анализировать json, который будет относительно медленным и потреблять память. Итак, воспользуйтесь SQL-соединениями.

Решение 1 будет быстрее и дешевле с точки зрения потребления памяти. И не беспокойтесь о космосе, в наше время космос — это не проблема, а эффективность. И если вы считаете, что данные бесполезны, зачем вы их храните?

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector