Зачем использовать простое число в хэш-коде?

Мне просто интересно, почему эти простые числа используются в методе класса hashCode () ? Например, при использовании Eclipse для создания моего метода hashCode () всегда используется простое число 31 :

public int hashCode() {
     final int prime = 31;
     //...
}

Ссылки:

Вот хороший учебник по Hashcode и статья о том, как работает хеширование, которое я нашел (C #, но концепции можно передавать): N соединяют таблицы с достаточно большим количеством записей, в дополнение к составному индексу я добавляю второй, неуникальный индекс во второй столбец.

Это хорошая идея для SQL Server?

(Может быть, это не так. хорошая идея в Jet?)

8
задан David-W-Fenton 31 August 2010 в 20:54
поделиться

3 ответа

Те же правила применяются в SQL Server. Если у вас есть индекс для (ColumnA, ColumnB), запрос только для ColumnA или ColumnA и ColumnB вместе может использовать индекс, но запрос только для ColumnB не может. Если есть необходимость присоединиться только к ColumnB, то обязательно нужно создать index.

15
ответ дан 5 December 2019 в 06:52
поделиться

Чтобы помочь вам больше, просто подсказка, в SQL Server с помощью студии управления вы можете оценить производительность с помощью «Показать предполагаемый план выполнения». Он показал, как работают индексы и соединение.

Также вы можете использовать DTA (советник по настройке ядра базы данных) для получения дополнительной информации и оптимизации.

4
ответ дан 5 December 2019 в 06:52
поделиться

Если у вас есть составной индекс по столбцам (A,B), никакие операции поиска, сканирования диапазона, сортировки или агрегирования не могут использовать его для выражений, содержащих только Б.Это верно для SQL Server, так же как и для драйверов Jet (Red) (и я думаю, что и для Jet Blue). Некоторые другие движки могут использовать его в так называемой операции skip scan .

Таким образом, ответ заключается в том, что вам нужны отдельные индексы только для (B).

5
ответ дан 5 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: