Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql在通配符搜索中的性能_Mysql_Sql - Fatal编程技术网

Mysql在通配符搜索中的性能

Mysql在通配符搜索中的性能,mysql,sql,Mysql,Sql,这两个查询之间有性能差异吗 1) 从表中选择* 2) 从表中选择*,其中列类似“%” 两个查询都返回相同的结果集。如果两个查询都返回相同的结果,那么LIKE查询几乎肯定效率不高,因为它必须从数据库中获得相同的结果,并检查LIKE子句,即使它没有做任何操作 这就是说,您应该自己对其进行基准测试,看看它是否会产生影响。但是,很难想象两种查询都是有效的。显然,简单地“从表中选择*比其他OneHank更快。实际上,在我的代码中,我想向查询添加一个可选的过滤器,当不存在时,该过滤器将返回整个结果集。因此,

这两个查询之间有性能差异吗

1) 从表中选择*

2) 从表中选择*,其中列类似“%”


两个查询都返回相同的结果集。

如果两个查询都返回相同的结果,那么
LIKE
查询几乎肯定效率不高,因为它必须从数据库中获得相同的结果,并检查
LIKE
子句,即使它没有做任何操作


这就是说,您应该自己对其进行基准测试,看看它是否会产生影响。但是,很难想象两种查询都是有效的。

显然,简单地“从表中选择*比其他OneHank更快。实际上,在我的代码中,我想向查询添加一个可选的过滤器,当不存在时,该过滤器将返回整个结果集。因此,如果未提供筛选器,它将对“%”进行筛选,否则将对提供的值进行筛选。动态创建查询不是一个选项。因此,我想确保这样实现不会影响性能。@V123456在这种情况下,我建议使用大量数据(类似于您希望放入表中的数据)进行尝试,看看性能是否可以接受。很难给出一般性的建议,因为这取决于你的桌子和你的性能要求。。我会试试的。谢谢事实上,谓词确实做了一些事情。。。它相当于一个“
列不为null
”谓词。(第二次查询不会返回该列中具有NULL值的行。)因此存在显著差异;只有在保证列不为NULL的特殊情况下,我们才能声明保证两个查询的结果集是等价的。谢谢@spencer7593假设列没有空值,并且它返回相同的结果集,与从表中选择*相比,性能会有所不同吗?