Пожелание: В компарире схем оптимизировать результ. SQL

Обсуждение возникших проблем, предложений и ошибок dbForge для MySQL
Закрыто
CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

Пожелание: В компарире схем оптимизировать результ. SQL

Сообщение CoL » Пт 24 апр 2009 17:18

Приветствую !!!
отличный у вас схем компаррер, по моим исследованиям ЛУЧШИЙ.

Просьба оптимизируйте результирующий sql для синхронизации, касательно порядка полей .

Мастер
CREATE TABLE table1 (
field1 INT(11) DEFAULT NULL,
field2 INT(11) DEFAULT NULL,
field3 INT(11) DEFAULT NULL
);

Таргет
CREATE TABLE table1 (
field3 INT(11) DEFAULT NULL,
field1 INT(11) DEFAULT NULL,
field2 INT(11) DEFAULT NULL
);

В результате
ALTER TABLE table1
CHANGE COLUMN field1 field1 INT(11) DEFAULT NULL FIRST,
CHANGE COLUMN field2 field2 INT(11) DEFAULT NULL AFTER field1,
CHANGE COLUMN field3 field3 INT(11) DEFAULT NULL AFTER field2;


А ведь гораздо проще так
ALTER TABLE table1
CHANGE COLUMN field3 field3 INT(11) DEFAULT NULL AFTER field2;

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Пн 27 апр 2009 09:37

Дело в том, что такое поведение необходимо в случае работы с некоторыми collation в MySQL. При изменении свойств одной из колонок необходимо указать изменения в других колонках в ALTER тексте, чтобы MySQL правильно их обработал.
Поэтому мы специально, во избежания ошибок, посылаем именно такие запросы. Т.к. это общее поведение и заранее неизвестно как отреагирует MySQL (причем в разных версиях он реагирует по-разному), к сожалению, Вашу просьбу мы выполнить не сможем.

CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

Сообщение CoL » Чт 30 апр 2009 12:01

Не могли бы вы чуть подробнее рассказать про эти некоторые collation или дать ссылочку почитать где. Очень интересно.

Может быть возможно опциональная реализация ?
к примеру по молчанию "полный" вид, а птичку поставил сокращенный
ведь:
1 - "полные" alter table выполняются гораздо медленнее
2 - гораздо труднее осмысливать, результирующий sql

как вы думаете я багу с TIMESTAMP NULL заметил?
именно когда всё лишнее убрал из ALTER, 2 строчки когда проще же обдумать чем 15.

PS
collation как я понимаю это операции сравнения завязанные на кодировку?

Duke
Devart Team
Сообщения: 93
Зарегистрирован: Пт 03 окт 2008 11:10
Контактная информация:

Сообщение Duke » Чт 30 апр 2009 12:15

Collation фактически определяет кодировку, в которой хранятся строковые данные (так как collation завязан с определенным charset'ом), плюс он определяет порядок сортировки этих данных при выборке.

Оптимизация запросов под более читабельный вид, во-первых, технически сложная задача, а во-вторых, может привести к тому, что в MySQL некоторые запросы перестанут выполнятся.

Закрыто