Я бы создал некоторую форму хэша, которая позволила бы использовать более короткий ключ. Во многих случаях может быть полезным что-то простое, например, хэш пути запроса. В качестве альтернативы что-то еще более простое, например, CRC32 ('/ your / path / here'), может подойти в вашей ситуации в качестве первичного ключа. В этом примере следующие столбцы будут существовать
urlCRC INT(11) UNSIGNED NOT NULL (PRIMARY KEY)
url VARCHAR(255) NOT NULL
page MEDIUMTEXT
Затем вы можете сделать еще один шаг и добавить триггер BEFORE INSERT
, который будет вычислять значение для urlCRC, т.е. содержащее
NEW.urlCRC = CRC32(NEW.url)
Затем вы можете создать хранимую процедуру, которая принимает в качестве аргумента inURL (string), и внутренне это будет делать
SELECT * FROM cacheTable WHERE urlCRC = CRC32(inURL);
Если количество возвращаемых строк равно 0, то вы можете запустить логику для его кэширования.
Это, конечно, может быть излишним, но даст вам числовой ключ для работы, которого, при условии отсутствия конфликтов, будет достаточно. Сохраняя URL-адрес как VARCHAR (255), также, если возникает конфликт, вы можете легко восстановить новые хеши, используя другой алгоритм.
Просто чтобы прояснить ситуацию, я просто использую CRC32 () в качестве примера на макушке, скорее всего, есть более подходящие алгоритмы. Главное, на что следует обратить внимание, так это на то, что числовой ключ более эффективен для поиска, поэтому, если вы сможете преобразовать свои строки в уникальные числовые значения, это будет более эффективным при получении данных.