Je me suis gratté la tête sur ce problème pendant des jours. Cela ne devrait pas être si difficile mais je n'ai pas encore trouvé la réponse.L'index de Marriadb pour la déclaration wildcard gauche
Mes données se présente comme suit: +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | name | varchar(255) | NO | | NULL | | | email | varchar(255) | NO | MUL | NULL | | | ip | varchar(255) | NO | | NULL | | | username| varchar(255) | NO | | NULL | | +---------+--------------+------+-----+---------+-------+
Maintenant, la prochaine requête contournera l'index parce que le caractère générique est au début de l'instruction LIKE.
SELECT * FROM db WHERE email LIKE '%@hotmail.com';
Maintenant, cette requête utilisera l'index car les index commencent au début
SELECT * FROM db WHERE email LIKE '[email protected]%';
Maintenant pour la question: Il doit y avoir une méthode pour créer un index qui commence le côté droit afin que je puisse utiliser des index pour des instructions telles que: "LIKE %@hotmail.com" sans avoir à créer une deuxième colonne.
Je me suis gratté la tête pour savoir de quelle base de données vous parlez. Est-ce mysql, sql-server ou mariadb? Choisissez-en un – GuidoG
Am utilisant MariaDB. Mais vu que c'est pour fork de mysql, une solution peut s'appliquer aux deux. – Eddie4