Mysql phpMyAdmin несколько вопросов: - PullRequest
1 голос
/ 06 августа 2011

Я довольно новичок в среде mysql phpMyadmin, и мне хотелось бы иметь некоторую область 1. Мне нужно поле текста, которое должно содержать до 500 символов.Это должно быть поле "ТЕКСТ"?принимает ли приложение ответственность за длину?

  1. индексы.Я понимаю, что когда я обозначаю поле как «индексированное», это означает, что у этого поля будет таблица указателей и при каждой команде WHERE, поиск будет оптимизирован этим полем (log n сложность).Но что произойдет, если я обозначу поле как проиндексированное после факта?скажи после того, как в нем есть несколько строк?можно ли выполнить команду типа «пройтись по всей этой таблице и проиндексировать это поле»?

  2. Когда я отмечаю поля как проиндексированные, я иногда получаю их в phpMyAdmin как имеющие имя ключа

  3. для доступа к таблице по индексируемому полю, когда я пишу php, потребуются ли с моей стороны дополнительные усилия, чтобы использовать это имя ключа, записанное там в представлении «структура», для использования таблицыкак внесено в указатель, или это имя ключа используется за кулисами, и я не должен беспокоиться об этом вообще?

  4. Иногда я получаю имена ключей, ссылающиеся на два или более полей в целом.Поля показывают одно поверх другого.Я не знаю, как это произошло, но мне нужно, чтобы они проиндексировали только одно поле.Что здесь происходит ?

  5. Я использую значения UTF-8 в моей базе данных.Когда я его создал, я думаю, что пометил его как utf8_unicode_ci, а некоторые поля помечены как utf8_general_ci, имеет ли это значение?Могу ли я вернуться и изменить определение всей БД на utf8_general_ci?

Я думаю, что это было совсем немного, заранее благодарю!Тед

Ответы [ 2 ]

2 голосов
/ 06 августа 2011

Во-первых, имейте в виду, что это не само по себе что-то о phpmyadmin, а больше о mysql / database.

1)

Индекс означает, что вы составляете список (большую часть временидерево) значений, которые присутствуют.Таким образом, вы можете легко найти строку с этими / этими значениями.Это дерево можно легко создать после того, как вы вставите значения, а затем до.Имейте в виду, это означает, что все команды «добавить в индекс» собраны вместе, так что это не то, что вы хотите сделать в «живой» таблице с множеством записей.Но вы можете добавить индекс, когда захотите.Просто добавьте индекс, и индекс будет создан, либо для пустой таблицы, либо для «используемой».

2)

Я не знаю, что вы подразумеваете под этим.У индексов есть имя, не важно, что это такое.(Первичный) ключ - это индекс, но не все индексы являются ключами.

3)

Вам не нужно «принудительно» использовать mysql для использования ключа, оптимизатор лучше всего знает, каки когда использовать ключи.Если ваши ключи верны, они используются, если они не верны, они не могут быть использованы, поэтому вы не можете заставить его: другими словами: не думайте об этом:)

4)

PHPMYADMIN создает составные ключи, если вы помечаете 2 поля как ключевые одновременно.Это раздражает и может ошибаться.Если вы ищете две вещи одновременно, вы можете использовать составной ключ, но если вы ищете одну вещь, вы не можете.Просто пометьте их как ключевые по одному или используйте правильную команду SQL вручную.

5)

вы можете изменить все, что захотите, но я не знаю, что произойдет сваши ценности.Лучше проверить вручную:)

0 голосов
/ 06 августа 2011

Если вам нужно поле, содержащее 500 символов, вы можете сделать это с помощью VARCHAR. Просто установите его длину на 500.

  1. Вы не индексируете поле за полем, вы индексируете целый столбец. Поэтому не имеет значения, есть ли в таблице данные. Все строки будут проиндексированы.

  2. Не вопрос

  3. Индексы будут использоваться всякий раз, когда они могут. Вам нужно беспокоиться только об использовании тех же столбцов, которые были проиндексированы в разделе WHERE вашего запроса. Читайте об этом здесь

  4. Вы можете добавить в индекс столько столбцов, сколько пожелаете. Например, если вы добавите в индекс столбцы «foo», «bar» и «ming», ваша база данных будет оптимизирована по скорости для поиска с использованием этих столбцов в предложении WHERE в указанном порядке. Опять же, ссылка выше объясняет все это.

  5. Я не знаю. Я на 100% уверен, что если вы используете в базе данных только значения UTF-8, это не будет иметь значения. Однако вы можете изменить это позже, как объясняется в этом вопросе Stackoverflow: Как преобразовать весь набор символов и сопоставление базы данных MySQL в UTF-8?

Я бы порекомендовал вам отказаться от PHPMyAdmin для HeidiSQL . HeidiSQL - клиент для Windows, который управляет всеми вашими серверами MySQL. Он имеет множество интересных функций, таких как копирование таблицы или базы данных непосредственно с одного сервера MySQL на другой. Попробуйте (это бесплатно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...