Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 SQL性能:比较n个值_Mysql_Sql_Database_Performance_Database Performance - Fatal编程技术网

Mysql SQL性能:比较n个值

Mysql SQL性能:比较n个值,mysql,sql,database,performance,database-performance,Mysql,Sql,Database,Performance,Database Performance,假设我们要从一个表中检索类型为string/varchar64的n个元素 我们认为0第一个应该是最快的。在数据库中进行过滤是最好的选择——我不能马上想到任何异常 代码应编写为: SELECT id, last_name FROM Users WHERE last_name IN ('a', 'b', 'c', 'd', . . . ); 如果你也想要第一个名字,那么把它放在选择框中 单引号是字符串常量的ANSI标准,它的长度更短,性能更好!而不是一堆的或表达 为什么这样更好 从数据库返回到应用

假设我们要从一个表中检索类型为string/varchar64的n个元素


我们认为0第一个应该是最快的。在数据库中进行过滤是最好的选择——我不能马上想到任何异常

代码应编写为:

SELECT id, last_name
FROM Users
WHERE last_name IN ('a', 'b', 'c', 'd', . . . );
如果你也想要第一个名字,那么把它放在选择框中

单引号是字符串常量的ANSI标准,它的长度更短,性能更好!而不是一堆的或表达

为什么这样更好

从数据库返回到应用程序的数据更少。这是第一个原因。 数据库可以使用索引查找行(如果有)。 MySQL通过执行布尔搜索,使用常量列表在中进行优化。 许多数据库(但不是MySQL)可以并行进行比较。
如果你有一个姓氏索引,那肯定会更快。不需要返回表中的所有内容,然后在另一段代码中迭代该结果。另外,您应该查看IN,而不是列出所有OR语句。根据我的经验,如果它在数据库中,几乎所有内容都比处理从数据库加载的数据快。非常感谢,我不确定是否要比较查询WHERE部分中的所有值!你可以用在,如果你能做到这一点,只有SQL它将是最好的,最快的总是。您的值是在内存中还是在另一个表中?思考集合理论,这就是RDBS引擎擅长的;2:它可以使用索引。或者,它可能决定扫描速度更快。3:什么是布尔搜索?也许你是说二进制搜索?如果是这样,它将在列表中,而不是在表中。
SELECT id, first_name, last_name 
FROM mytable
result = []
for last_name in output:
    if last_name in POSSIBLE_NAMES:
        result.append(last_name)
SELECT id, last_name
FROM Users
WHERE last_name IN ('a', 'b', 'c', 'd', . . . );