создание отсортированного списка в базе данных

#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 строках, вы вряд ли заметите какие-либо проблемы с производительностью, даже если вы не выполняете надлежащую индексацию или нормализацию. С миллионом строк вы заметите.