替代查询“喜欢” MariaDB

阿尔丹

我正在使用MariaDB,并进行了一些查询以在现场查找一些数据

查询:

SELECT
    COUNT(
        CASE WHEN alamat.alamat_prins LIKE '%Aceh%' THEN 1 END
    ) AS 'id-ac'
FROM
    kont_uji_rutin AS UjiRutin 
    LEFT JOIN alamat ON UjiRutin.id_prins = alamat.id_prins 
WHERE
    UjiRutin.tgl_tri BETWEEN '2019-01-01' AND '2019-12-31'

使用LIKE查询是对我所拥有的内容进行全文匹配的最慢方法。如果字段中包含“ Aceh”一词,是否有其他查询来查找字段中的数据?

先感谢您

戈登·利诺夫

您应该将比较移至该WHERE子句,并省去LEFT JOIN

SELECT COUNT(*) as 'id_ac'
FROM kont_uji_rutin ur JOIN
     alamat a
     ON ur.id_prins = a.id_prins 
WHERE ur.tgl_tri BETWEEN '2019-01-01' AND '2019-12-31' AND
      a.alamat_prins LIKE '%Aceh%';

这不会对性能产生太大影响。索引:

  • kont_uji_rutin(tgl_tri, id_prins)
  • alamat(id_prins, alamat_prins)

值得尝试(它们涵盖了可能带来性能优势的查询)。

最终,问题是模式开头的通配符。这样可以防止使用索引。您可以考虑对全文索引alamat(alamat_prins)如果全文功能可以满足您的需求,则可以加快查询速度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章