Вот сценарий 1.
У меня есть таблица с именем "items", внутри таблицы есть 2 столбца, e. г. item_id
и item_name
.
Я храню свои данные таким образом:
item_id | item_name
Ss001 | Shirt1
Sb002 | Shirt2
Tb001 | TShirt1
Tm002 | TShirt2
... и т. Д., Я храню таким образом:
первая буква - код для одежды, т.е. S для рубашки, T для футболки
вторая буква - размер, т. е. для малого, м для среднего и б для большого
Скажем, в моей таблице предметов я получил 10000 предметов. Я хочу сделать быстрый поиск, скажем, я хочу найти конкретную рубашку, могу ли я использовать:
Method1:
SELECT * from items WHERE item_id LIKE Sb99;
или я должен сделать это так:
Method2:
SELECT * from items WHERE item_id LIKE S*;
* Сохраните результат, затем выполните второй поиск по размеру, затем третий поиск по идентификатору. Как и концепция хеш-таблицы.
Я хочу добиться того, чтобы вместо поиска по всем данным я хотел свести к минимуму поиск, сначала выполняя поиск по коду одежды, затем по коду размера, а затем по коду ID. Какой из них лучше с точки зрения скорости в MySQL. И какой из них лучше в долгосрочной перспективе. Я хочу уменьшить трафик и не беспокоить базу данных так часто.
Спасибо, ребята, за решение моего первого сценария. Но приходит другой сценарий:
Сценарий 2:
Я использую PHP и MySQL. Продолжите предыдущую историю. Если моя таблица пользователей имеет такую структуру:
user_id | username | items_collected
U0001 | Alex | Ss001;Tm002
U0002 | Daniel | Tb001;Sb002
U0003 | Michael | ...
U0004 | Thomas | ...
Я храню items_collected в виде идентификатора, потому что однажды каждый пользователь может собрать до сотен предметов, если я храню в виде строки, т.е. Shirt1, брюк2, ..., это потребует очень большого количества пространства в базе данных у нас 1000 пользователей, а некоторые наименования предметов очень длинные).
Будет ли легче поддерживать, если я буду хранить в форме идентификатора?
А если скажем, я хочу отобразить изображение, а именем изображения является имя элемента + jpg. Как это сделать? Это что-то вроде этого:
$ result = Выбрать items_collected от пользователей, где userid = $ userid
Использование php explode:
$ itemsCollected = explode ($ result, ";");
После этого, сопоставляя каждый элемент в таблице предметов, нужно:
рубашка1, брюки2 и т. Д.
Ден с использованием функции цикла, зациклите каждое значение и добавьте ".jpg" для отображения изображения?