#mysql #database #database-design
#mysql #База данных #база данных-дизайн
Вопрос:
Итак, в основном у меня есть таблица с именем contents
, в которой пользователи могут хранить свои элементы. Обычно здесь, когда пользователь добавляет новый элемент, элемент добавляется в конец строк.
Что-то вроде:
|ID | Name | Item |
--------------------
|1 | Jack | pen |
|2 | Mark | apple |
|3 | albert| orange|
|4 | Jack | pencil|
Но проблема с вышеизложенным заключается в том, что это может занять много времени, когда у нас много пользователей, и такие элементы, как первый элемент Джека, имеют идентификатор строки 40, а элемент № 2 — 1000048, и поэтому поиск всех элементов, принадлежащих Джеку, может занять некоторое время, поэтому я былинтересно, как отсортировать их по имени, чтобы это могло быть что-то вроде:
|ID | Name | Item |
--------------------
|1 | Jack | pen |
|2 | Jack | pencil|
|3 | Mark | apple |
|4 | albert| orange|
И если пользователь добавил новый элемент, он должен быть добавлен в конец его списка строк.
Все ответы очень ценятся, спасибо 🙂
Комментарии:
1. Не уверен в понимании… вам нужен sql с простым предложением «order by», но проблема в том, что это занимает слишком много времени, потому что ваша таблица очень большая, верно? возможно, вам необходимо создать индекс: dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
2. Да, таблица очень большая, поэтому мне нужен более быстрый способ их поиска
3. Ваша структура базы данных нуждается в улучшении. Вы неправильно смоделировали свою базу данных, и я думаю, вам следует начать с повторной модели и применения к ней обычных форм. После всего этого вы можете подумать о создании индексов по столбцам, которые будут находиться в условиях поиска.
4. Конечно, мне нужно изменить структуру, но можете ли вы сказать мне, как ее реструктурировать с помощью нового более быстрого дизайна?
Ответ №1:
Добавьте индексы для любого столбца (или комбинации столбцов), которые вы хотите найти и / или упорядочить.
Не переупорядочивайте таблицу и не перенумеровывайте идентификаторы.
Если вы говорите о 1000 строках, вы вряд ли заметите какие-либо проблемы с производительностью, даже если вы не выполняете надлежащую индексацию или нормализацию. С миллионом строк вы заметите.