Мне нужно увеличить varchar одного столбца от 64 до 80. Таблица довольно большая (9 м строк). Один момент, который делает изменение неопределенным, заключается в том, что столбец также индексируется.Изменить таблицу, чтобы изменить размер индекса
Итак, если я изменяю столбец, так как столбец является одним из индексов, произойдет ли какая-либо блокировка для строки или таблицы?
Спасибо.
См. Также http://stackoverflow.com/a/4849030/1394393. Моим советом было бы избавиться от длины от типа 'VARCHAR' *, пока у вас есть шанс. При необходимости замените его на ограничение, как описано в связанном ответе/статье. – jpmc26
Звучит так, что варчар не является хорошим вариантом с самого начала. Похоже, я должен сначала изменить столбец на текст, а затем добавить некоторое ограничение снаружи. Но «текст» выглядит не очень хорошо для индекса и в моем первом ощущении, верно? – user4604022
'text' и' varchar' точно такие же, когда длина 'varchar' не задана. Даже с длиной, они оба все еще реализованы одинаково под капотом. Учитывая, что все основные типы текста имеют одну и ту же базовую реализацию, я бы * чрезвычайно * удивился, если бы индекс выполнялся по-разному для любого из них. Недостатки, обсуждаемые в этой статье, связаны с ограничениями длины (за исключением 'char', который имеет странное поведение из-за устаревших стандартов). – jpmc26