mysql - SQL查询优化(时间)

标签 mysql sql performance

考虑一个示例表“salary_details”

enter image description here .

现在,经过一些预处理后,我的 ArrayList ('user_id') 中有一些 ID。

user_id(0): 1
user_id(1): 3
user_id(2): 4
user_id(3): 6   

我想做的是只过滤那些 id 的 salary = 2000。

哪种方法更好:

1. 

   for (int i = 0; i < user_id.size(); i++) {
    SELECT ID FROM salary_details WHERE (part_id = user_id.get(i)) AND (SALARY = 2000)
    }

2. 

SELECT ID FROM salary_details 
   WHERE ((part_id = user_id.get(0)) 
     OR (part_id = user_id.get(1)) 
     OR (part_id = user_id.get(2)) 
     OR (part_id = user_id.get(3))) 
     AND (SALARY = 2000)

或者,还有其他更好的选择吗?

最佳答案

使用 IN子句:

SELECT ID FROM salary_details WHERE SALARY = 2000 and part_id (in user_ids)

确切的语法取决于您的驱动程序/语言(只有一件事:使用准备好的语句,不要连接 sql 和值来构建查询)。

现在,最高效的查询

  • 必须通过测量找到
  • 非常依赖于您的数据和索引(使用 explain )

关于mysql - SQL查询优化(时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38785623/

相关文章:

MYSQL 函数,是 Workbench 还是只是菜鸟?

mysql - 调试存储过程中的mySQL语法错误

sql - ORA-30089 执行带有 DATE 类型字段的 CREATE TABLE 时

Java 效率 - 点与坐标

php - 优化查询SQL

mysql - 从数据库 Laravel 中删除重复条目

mysql - 更新具有潜在冲突的主键字段

sql - 用户购买平台及金额统计

Python性能特点

java - 比 DecimalFormat.format() 更快的替代方法?