Mysql SQL性能:比较n个值
假设我们要从一个表中检索类型为string/varchar64的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标准,它的长度更短,性能更好!而不是一堆的或表达 为什么这样更好 从数据库返回到应用
我们认为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', . . . );