1) Это хорошая идея сделать ваш первичный ключ как показатель? (если предположить, что первичный ключ является уникальным, идентификатор
Все DBMSes я знаю автоматически создать индекс под ПК.
в случае MySQL/InnoDB, ПК будет не просто индексируется, но этот индекс будет clustered index.
(кстати, просто говоря, «первичный ключ» подразумевает, что является уникальным, поэтому нет необходимости явно указать «предполагая, что первичный ключ является уникальным».)
2) как бы я знать, какие столбцы индексировать?
Это зависит от того, какие запросы необходимо поддерживать.
Но будьте осторожны, что добавление индексов не является бесплатным и является вопросом инженерного компромисса - в то время как некоторые запросы могут извлечь выгоду из индекса, некоторые из них могут действительно пострадать от него. Например:
- Индекс по
FOO
бы значительно ускорить в SELECT * FROM T WHERE FOO = ...
.
- Однако этот же показатель несколько снизит
INSERT INTO T VALUES (...)
.
В большинстве ситуаций вы предпочитаете большое ускорение в SELECT при малом замедлении в INSERT, но это может быть не всегда так.
Индексирование и производительность базы данных в целом являются сложной темой, выходящей за рамки скромного сообщения StackOverflow, но если вы заинтересованы, я настоятельно рекомендую прочитать Use The Index, Luke!.
Что относительно MySql? – user962206
@ user962206: То же самое. [Связанный вопрос здесь.] (Http://stackoverflow.com/questions/1071180/is-the-primary-key-automatically-indexed-in-mysql) –
Я обновил свой вопрос – user962206