Сфинкс вопрос: структурирование базы данных - PullRequest
2 голосов
/ 13 июля 2010

Я занимаюсь разработкой службы вакансий, которая имеет такие функции, как радиальный поиск, полнотекстовый поиск, возможность выполнять полнотекстовый поиск + отключить определенные списки вакансий (например, отменить проверку текстового поля и больше не возвращать полный рабочий день). рабочие места).

Разработчик, работающий над Sphinx, хочет, чтобы информация базы данных сохранялась как целые числа с ключом (поэтому в таблице «Тип задания» могут храниться значения, такие как 1 = «неполный рабочий день» и 2 = «полный»). -time ") ... тогда как другие разработчики хотят сохранить базу данных в виде строк (поэтому под таблицей" Тип задания "написано" неполный рабочий день "или" полный рабочий день ".

Есть ли причина сохранять базу данных в виде целых чисел? Или строки должны быть в порядке?

Спасибо!

Walker

Ответы [ 3 ]

3 голосов
/ 14 июля 2010

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

Сравнение строк является ресурсоемким, потенциально на порядок хужечем сравнение чисел.

Вы можете отключить пользовательский интерфейс от суррогатного ключа, но показать другой столбец (например, job_type).Таким образом, когда вы нажимаете на базу данных, вы передаете int и избегаете просматривать таблицу, чтобы найти строку с совпадающей строкой.

Когда дело доходит до объединения таблиц в базе данных, они запускаются намного быстрее, если в качестве первичных ключей у вас есть int или другой номер.

Редактировать: В указанном вами конкретном случае, если у вас есть только два варианта того, каким может быть ваше поле,вряд ли что-то изменится, вы можете захотеть взглянуть на что-то вроде битового поля, и вы можете назвать его IsFullTime.Битовое или логическое поле содержит 1 или 0 и ничего больше и обычно не связано с другим полем.

1 голос
/ 14 июля 2010

Помимо обычных причин использования целочисленных первичных ключей, необходимо использовать целые числа с Sphinx , поскольку набор результатов, возвращаемый при успешном поиске по Sphinx, представляет собой список идентификаторов документов, связанных с соответствующими элементами , Эти идентификаторы затем используются для извлечения соответствующих данных из базы данных. Sphinx не возвращает строки из базы данных напрямую.

Подробнее см. В руководстве Sphinx , особенно 3.5. Ограничения на исходные данные .

1 голос
/ 14 июля 2010

, если вы нормализуете свою структуру (я надеюсь, что это так), тогда цифровые клавиши будут наиболее эффективными.

...