SQL查询太慢

特里维斯

我必须创建一个sql查询,使所有用户的名字,中间名或姓氏都包含字符'|'。所以我做了类似的事情:

SELECT two.id, 
       two.username, 
       one.firstname, 
       one.middlename, 
       one.lastname 
FROM table_one one INNER JOIN table_two two ON two.id = one.id
WHERE one.firstname LIKE '%|%' 
OR one.middlename LIKE '%|%' 
OR one.lastname LIKE '%|%'

该查询在约有1000个配置文件的测试环境中运行良好,但在包含成千上万个配置文件(甚至不接近一百万个)的生产环境中会超时。

我们正在运行DB2,版本8.2

波希米亚风格

您可以尝试拆分搜索以删除OR,而该搜索由于性能不佳而臭名昭著:

SELECT
  two.id, 
  two.username, 
  one.firstname, 
  one.middlename, 
  one.lastname 
FROM (
  SELECT id, firstname, middlename, lastname
  FROM table_one 
  WHERE one.firstname LIKE '%|%'
  UNION
  SELECT id, firstname, middlename, lastname
  FROM table_one 
  WHERE one.middlename LIKE '%|%'
  UNION
  SELECT id, firstname, middlename, lastname
  FROM table_one 
  WHERE one.lastname LIKE '%|%'
) one
INNER JOIN table_two two ON two.id = one.id

在每个名称列上都有一个索引,就有机会在单独的联合查询中使用每个索引

使用onUNION方便地丢弃重复项,因此在多个名称列包含管道字符的情况下,不会导致重复输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL 查询多个连接太慢

来自分类Dev

使用GROUP BY和IN的SQL查询太慢

来自分类Dev

SQL Server 查询太慢丢失索引?

来自分类Dev

基于索引的查询太慢

来自分类Dev

SQL replace语句太慢

来自分类Dev

Postgres表选择查询太慢

来自分类Dev

Python FFmpeg查询rtsp太慢

来自分类Dev

使用OrientDB的ShortestPath查询太慢

来自分类Dev

postgresql全文搜索查询太慢

来自分类Dev

Oracle SQL查询SELECT MINUS SELECT不起作用或速度太慢

来自分类Dev

IP地理位置查询太慢

来自分类Dev

为什么这个ArangoDB查询太慢?

来自分类Dev

选择查询的偏移量限制太慢

来自分类Dev

Parse.com查询太慢,需要更快

来自分类Dev

从TokuDB查询创建临时表太慢

来自分类Dev

MondoDB /猫鼬查询响应太慢

来自分类Dev

查询太慢,没有使用索引

来自分类Dev

IP地理位置查询太慢

来自分类Dev

Parse.com查询太慢,需要更快

来自分类Dev

相关子查询的更新语句太慢

来自分类Dev

来自subselect的SQL聚合功能太慢

来自分类Dev

查询多于3个表时,左联接性能太慢

来自分类Dev

mysql查询选择不在运行中太慢

来自分类Dev

使用OLEDB(VFPOLEDB)在DBF文件上运行查询太慢

来自分类Dev

mysql查询从10,000个数据中检索速度太慢(查询优化)

来自分类Dev

带有多个子查询的MySQL查询太慢。如何加快速度?

来自分类Dev

实体数据模型向导太慢(SQL数据库)

来自分类Dev

在vSphere 6 VM上长时间安装Sharepoint 2013 /查询速度太慢

来自分类Dev

{{#if currentUser}}太慢