2008-12-06 8 views
0

Я использую TopLink как мой ORM и MySQL как БД.Теперь, когда я преобразовал первичные ключи в GUID, как я могу исправить производительность?

Я продал первичные ключи с автоматическим инкрементом для GUID для одной из моих таблиц (хорошо, не совсем: я на самом деле использую случайное 64-битное целое число, но это достаточно хорошо для моих нужд).

В любом случае, теперь запросы, которые даже не используют ключ, занимают гораздо больше времени.

Что я могу сделать?

+0

Вы поменяли свой гарантированный уникальный первичный ключ с автоматическим добавлением на 64-битное случайное значение, которое будет производить дубликаты? Зачем? – some 2008-12-06 02:10:52

+0

хорошо ... чтобы воспользоваться преимуществами, которые предлагают GUID. и в моем случае, если произойдет дубликат, приложение просто попробует еще раз. – carrier 2008-12-06 02:27:03

+0

Это может быть интересно: http://www.mysqlperformanceblog.com/2007/03/13/to-uuid-or-not-to-uuid/ – some 2008-12-06 03:34:49

ответ

1

Если ваша таблица проиндексирована полями, на которые вы запрашиваете. содержание ключа не должно иметь заметного влияния на производительность. Возможно, что-то еще.

+0

У меня есть поле, которое представляет createDate. как я могу заставить свою таблицу быть индексом соответственно? – carrier 2008-12-06 02:28:28

1

Убедитесь, что ключевой столбец действительно является ПЕРВИЧНЫМ КЛЮЧОМ и, следовательно, кластерным (физическим) индексом.

Убедитесь, что у вас есть индексы, которые попадают в ваши общие запросы.


Случайные целое? Вы понимаете, что есть шанс попасть в тот же самый ключ?

0

У меня есть поле, которое представляет createDate. как я могу заставить свою таблицу быть индексом соответственно?

create index Table_creationDate on Table(creationDate); 
1

Если вы используете InnoDB таблиц в MySQL all rows are referred to by primary key, так что если вы используете вторичный ключ производительность будет страдать.

 Смежные вопросы

  • Нет связанных вопросов^_^