使用“Like”和通配符优化 MySQL 搜索
使用带有前导通配符的“like”的 MySQL 查询,例如“SELECT * FROM sometable” WHERE somefield LIKE '%value%'" 经常遇到性能问题。前导通配符会阻止 DBMS 利用索引,从而导致搜索时间变慢。
优化策略
一种有效的优化技术是将搜索字符串分解为更小的片段。不是存储整个字符串“value”,而是存储所有可能的后缀:“value”、“alue”、“lue”、“ue”和“e”。通过这样做,您可以消除前导通配符,并允许数据库使用索引来更快地查找。
存储注意事项
存储所有后缀的成本以二次方增加字符串长度。例如,与存储原始字符串相比,5 个字母的单词需要 2.5 倍的存储空间。因此,考虑到数据库限制,确定此存储开销是否可接受非常重要。
单词拆分的注意事项
对于多单词短语,决定如何拆分单词言语至关重要。例如,您应该将“五个字母”存储为一个还是两个单词?分解单词可能会限制搜索灵活性,但将它们保留为一个单元会增加存储要求。找到适合您搜索模式的平衡点。
其他提示
考虑在后缀列上使用二级索引以加快搜索速度。仅对必要的列建立索引以最大程度地减少冗余。如果可能,限制这些查询生成的行数以避免性能瓶颈。
以上是如何使用带有前导通配符的'Like”来优化 MySQL 搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!