Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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,在MySQL中,这样做很糟糕: SELECT ... WHERE foo IN ('bar') 而不是这个 SELECT ... WHERE foo = 'bar' …鉴于此动态生成的WHERE子句也可能 SELECT ... WHERE foo IN ('bar', 'baz', 'buz') 我不确定我是否会为此担心 但是,因为它是动态生成的,所以在构建where子句之前,您始终可以进行测试以查看有多少值。我的理解是,在执行之前,它将转换为相同的值。无论采用哪种方式,我都会将其放在“关

在MySQL中,这样做很糟糕:

SELECT ... WHERE foo IN ('bar')
而不是这个

SELECT ... WHERE foo = 'bar'
…鉴于此动态生成的WHERE子句也可能

SELECT ... WHERE foo IN ('bar', 'baz', 'buz')

我不确定我是否会为此担心


但是,因为它是动态生成的,所以在构建where子句之前,您始终可以进行测试以查看有多少值。

我的理解是,在执行之前,它将转换为相同的值。无论采用哪种方式,我都会将其放在“关注度非常低”的标题下。

对于SQL查询优化和最佳实践,最好使用:

WHERE foo = 'bar' OR foo = 'baz'
比:


关于

我也不确定,但如果没有显著的性能影响,我宁愿保持生成代码干净+concise@Rob阿加尔:这属于预优化的概念。如果在评测应用程序时,您注意到性能受到影响,请更改它。否则,你就去做你觉得更舒服的事情。可能重复:@mcabral:我同意@卡西诺的答案最适用于这一点situation@mcabral-出于好奇,你是怎么发现那个傻瓜的,因为“in”是一个停止词?你这个老把戏!谷歌搜索“site:stackoverflow.com关键字中的mysql”@mcabral哈哈!是的,很明显,一旦你看到它,它实际上应该是
foo='bar'或foo='baz'
,但我认为这根本不会改变性能。你有这方面的来源吗?我不是有意粗鲁,但我一直在读它们是完全一样的。对于小的IN条款,没有问题。但是,如果您有非常大的IN子句,特别是那些随每次执行而变化的子句,则多页分配器和过程缓存会出现重大问题。
WHERE foo IN ('bar', 'baz')