如何编写高效SQL查询 在Redash中根据ID获取关联电话号码
方案1:使用SQL的IN运算符简化查询语句
直接把多个OR拼接的等值条件替换成IN子句,写法简洁很多,执行效率和多个OR几乎没有差异,优化后的SQL如下:
SELECT "ID", "Phone_Number" FROM Table WHERE "id" IN ('7559', '1754', '8679', '6606', '4166', '7066', '0027');
你只需要把需要查询的ID值统一放到IN后面的括号里,用逗号分隔即可,不用逐个写OR条件。
方案2:结合Redash的查询参数实现更灵活的批量查询
如果每次查询的ID列表都需要调整,可以用Redash自带的参数功能,不用每次修改SQL本体:
- 把SQL改写成带参数的形式:
SELECT "ID", "Phone_Number" FROM Table WHERE "id" IN ({{id_list}})
- 新建参数
id_list,类型设置为文本,每次查询的时候直接把所有要查的ID按'值1','值2','值3'的格式粘贴到参数输入框就可以直接运行。如果需要更方便的不带引号输入,可以把参数类型设置为多值参数,Redash会自动帮你处理引号和分隔符,你直接粘贴ID列表即可。
补充注意事项
如果你的id字段是数值类型而非字符串类型,可以去掉IN列表里每个值外侧的单引号,语法更简洁,执行效率也会更高。
内容的提问来源于stack exchange,提问作者The Singularity
相关产品推荐
相关产品推荐

