проверка всей базы данных во время новой записи

Я настроил CMS, встроенный в PHP. мой сайт имеет более 2 000 000 сообщений. когда я публикую новые сообщения, это занимает слишком много времени, чтобы опубликовать отдельные сообщения.

Когда я публикую новое сообщение, он проверяет всю базу данных, чтобы найти, существует ли URL в базе данных. если он существует, то он показывает ошибку.

Я хочу знать, это необходимо для проверки всей базы данных, чтобы проверить, если URL уже существует.

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

0

Решение

Вместо того, чтобы проверять базу данных на предмет уникальности URL-адреса, просто сделайте его уникальным, добавив идентификатор новой записи в строку URL-адреса, которую вы сохраняете, и настройте свой веб-сайт таким образом. Например, вместо вас URL выглядит так:

mywebsite.com/post/test-post

Используйте что-то вроде

mywebsite.com/post/test-post/100

Где значение 100 является идентификатором поста, который является уникальным первичным ключом

1

Другие решения

Если вы настаиваете на использовании URL-адреса, сгенерированного из строки темы сообщения (я полагаю, это то, что вы делаете здесь, ваш вопрос немного расплывчатый), то создайте таблицу, содержащую хэши каждого URL-адреса, и выполните поиск хеш Это быстрый бинарный поиск. Вам нужно следить за коллизиями хэшей, поэтому вы должны также хранить строку в полном объеме.

0