Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица information_schema.statistics / 10 сообщений из 10, страница 1 из 1
29.10.2014, 17:30:40
    #38791045
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
Всем привет.
В таблице information_schema.statistics содержится информация об индексах таблиц БД.

Выполняю такой запрос:
Код: sql
1.
2.
3.
4.
select index_name, group_concat(column_name order by seq_in_index)
from statistics
where table_schema="[db_name]" and table_name="[table_name]"
group by index_name



Получаю некий результат. Все ок, кроме одного: последовательности записей.
Сначала почему-то идут индексы типа foreign_key, затем primary, затем unique.
А мне нужно primary, unique, foreign.

Поля для сортировки в таблице не нашел.
Seq_in_index использую для сортировки по названию столбца внутри каждого индекса.
А как управлять последовательностью самих индексов.

Если провести эксперимент, и убрать group_concat и group by - результат возвращается в той последовательности,
в которой надо. Почему-то group by меняет эту последовательность. Как вернуть обычную?

Заранее спасибо!
...
Рейтинг: 0 / 0
29.10.2014, 18:00:33
    #38791087
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
Ну как обычно )

Если я выбираю телевизор для покупки - он нигде не продается, все раскуплено.
Если я сталкиваюсь с какой-то проблемой - с ней никто больше не сталкивался )))
...
Рейтинг: 0 / 0
29.10.2014, 18:02:28
    #38791090
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
После group by добавить соотв. order by...
...
Рейтинг: 0 / 0
29.10.2014, 18:06:20
    #38791097
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
Что значит соответствующий ORDER BY?
По какому конкретно полю сортировать?
Я не нашел!
...
Рейтинг: 0 / 0
29.10.2014, 20:00:49
    #38791170
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
Поступи дубово и сортируй по LEFT(index_name,3).
...
Рейтинг: 0 / 0
29.10.2014, 21:03:56
    #38791201
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
Туплю я, наверное, еще более дубово )
Можешь пояснить, что означает твоя сортировка?
...
Рейтинг: 0 / 0
29.10.2014, 21:34:58
    #38791210
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
urukhayЕсли провести эксперимент, и убрать group_concat и group by - результат возвращается в той последовательности,
в которой надо.Это мираж, фикция. Которая исчезает при малейшем движении.

Посмотрите на таблицу INFORMATION_SCHEMA.TABLE_CONSTRAINTS. Если в ней поле CONSTRAINT_NAME совпадет с INFORMATION_SCHEMA.STATISTICS.INDEX_NAME (что не факт, насколько я понимаю), то сможете сделать нужную сортировку.
...
Рейтинг: 0 / 0
30.10.2014, 09:41:38
    #38791438
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
авторЭто мираж, фикция.
А с чем связано такое поведение? Ну это так, чисто ради любопытства ...

авторЕсли в ней поле CONSTRAINT_NAME совпадет с INFORMATION_SCHEMA.STATISTICS.INDEX_NAME (что не факт, насколько я понимаю)

Они совпадают, но не для всех записей таблицы STATISTICS!
Т.е. для типов констрейнтов PRIMARY и FOREIGN KEY совпадения имеются. А вот для обычных индексов в таблице STATISTICS есть запись, а в таблице TABLE_CONSTRAINTS соответствующей записи уже нет!

Да и меня смущает то, что если делать экспорт таблицы средствами pma, то в полученном CREATE TABLE последовательность индексов и ключей идет в правильном порядке: PRIMARY, KEY, CONSTRAINT. Значит как-то это сделать можно, логично?
...
Рейтинг: 0 / 0
30.10.2014, 09:54:39
    #38791460
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
urukhayавторЭто мираж, фикция.
А с чем связано такое поведение? Ну это так, чисто ради любопытства ...Скорее всего связано с хронологическим порядком создания индексов.
urukhayА вот для обычных индексов в таблице STATISTICS есть запись, а в таблице TABLE_CONSTRAINTS соответствующей записи уже нет!Логично, обычный индекс не связан с констрейнтами. Делайте внешнее соединение.
urukhayДа и меня смущает то, что если делать экспорт таблицы средствами pma, то в полученном CREATE TABLE последовательность индексов и ключей идет в правильном порядке: PRIMARY, KEY, CONSTRAINT. Значит как-то это сделать можно, логично?Тут неизвестно. Либо таки совпадение. Либо используется та же таблица STATISTICS. Либо используется результат команды SHOW CREATE TABLE, которая вполне может использовать данные, невидимые через таблицы INFORMATION_SCHEMA.
Если очень интересно - включите полное логирование запросов в MySQL и выполните эту операцию.
...
Рейтинг: 0 / 0
30.10.2014, 15:31:58
    #38791830
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица information_schema.statistics
Мда, весело!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица information_schema.statistics / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]