Votre question laisse beaucoup à l'imagination.
D'une part, nous devons supposer que le but de votre index est de servir de clé primaire pour éviter les doublons. Vous ne développerez pas une application qui dira jamais à un utilisateur, « Désolé, il y a une erreur dans votre saisie de données de 1 800 caractères ; cela ne correspond pas, veuillez réessayer ».
D'autre part, nous devons supposer que vos URL contiennent potentiellement de nombreux paramètres CGI (?param=val¶m=val¶m=val).
Si ces hypothèses sont vraies, alors voici ce que vous pouvez faire.
-
Rendez votre colonne d'URL plus longue, en tant que varchar, si nécessaire.
-
Ajoutez une colonne de hachage SHA-1 à votre table. Les hachages SHA-1 sont constitués de chaînes de 40 caractères (chiffres hexadécimaux).
-
Faites de cette colonne votre clé primaire.
-
Lorsque vous mettez des éléments dans votre table, utilisez la fonction mySQL SHA1 pour calculer les valeurs de hachage.
-
Utilisez la commande mySQL INSERT ... ON DUPLICATE KEY UPDATE pour ajouter des lignes à votre base de données.
Cela vous permettra de garder les URL en double hors de votre base de données sans confusion d'une manière qui évolue bien.
http://dev.mysql.com/doc /refman/5.1/en/insert-on-duplicate.html