Настроить таблицу MySQL для заказа по уникальному индексу

0

У меня есть таблица MySQL с этими полями:

Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255) NOT NULL UNIQUE,
ReleaseDate DATETIME(6) NOT NULL DEFAULT "1970-01-01"

По умолчанию эта таблица указана по Id потому что это первичный ключ. Когда я Id столбец Id и делаю Name первичным ключом, таблица упорядочивается в алфавитном порядке, чего я хочу.

С Id в качестве первичного ключа, а Name является индексом UNIQUE таблица продолжает оставаться упорядоченной в порядке возрастания Id. Я знаю, что я могу использовать ORDER BY Name при отображении таблицы, но есть ли способ настроить таблицу, чтобы она всегда оставалась в порядке алфавитного имени и полностью игнорировала порядок столбца Id?

Показать ещё 1 комментарий
Теги:
database

2 ответа

4
Лучший ответ

В SQL нет причин, по которым вы должны когда-либо зависеть от физического порядка работы базы данных. Реляционные таблицы концептуально больше напоминают неупорядоченные множества, чем упорядоченные списки. Если предположить, что определенный физический порядок может привести к непредсказуемым результатам.

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

CREATE VIEW orderedView AS
SELECT * FROM myTable ORDER BY myColumn
1

В реляционной базе данных, как правило, таблица упорядочивается физически с помощью PRIMARY KEY. При этом повышается производительность запросов. Итак, если вы хотите, чтобы ваша таблица оставалась заказанной по "имени", вы должны объявить "имя", как ваш первичный ключ. Если это не обязательно, вы должны создать представление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню