想我这样做:MySQL的后备WHERE语句
SELECT * FROM table WHERE field2 = '[email protected]' OR field2 LIKE '%%[email protected]%%';
在这种情况下,它会尝试执行两个field2 = '[email protected]'
和field2 LIKE '%%[email protected]%%'
条件(即,它会搜索匹配,因此这些条件需要行匹配一些更多的计算能力,试图找到行匹配两个条件,即使它已经发现了一排匹配field2 = '[email protected]'
)
有没有办法通过改革查询才指示MySQL的尝试执行field2 LIKE '%%[email protected]%%'
如果条件field2 = '[email protected]'
不匹配任何事都可以查询变得更高效
IE。我基本上希望mysql只尝试找到匹配field2 LIKE '%%[email protected]%%'
的行,只有当没有行匹配field2 = '[email protected]'
。如果找到完全匹配的行field2 = '[email protected]'
,不要试图去匹配field2 LIKE '%%[email protected]%%'
此外,没有子查询
这是否工作:'SELECT * FROM table WHERE field2 ='2019 @ 162440'OR(field2!='2019 @ 162440'AND field2 LIKE'%% 2019 @ %%');' –
它会返回相同的 – AdrianBR
@AdrianBR是的,但会保持mysql做这两个检查?我在这里问,我不知道。 –