如果TypePkString
是一个VARCHAR,那么你必须引用8796150399058
,否则性能会很差。 (相反的情况无所谓。)
布尔表达式(例如EXISTS(...)
)返回0
为false 和1
为true,所以这个
CASE WHEN (...) THEN true ELSE false AS ...
可以简化
(...) AS ...
其中一些索引可能会有所帮助:
item_t0: INDEX(p_showondashboard, p_district, TypePkString, p_accountname)
item_t1: INDEX(p_uid, TypePkString)
item_t2: INDEX(SourcePK, TargetPK, TypePkString)
假设p_accountname
有一个以_ci
结尾的排序规则[请提供SHOW CREATE TABLE
],您可以删除LOWER()
,因为它没有必要且速度慢。
LIKE
带有前导通配符 (%
) 会拒绝索引。您是否考虑过使用 FULLTEXT(如果用户输入“单词”,而不是随机字符串)。
【讨论】: