首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >28K左右表值内连接的sqlite优化

28K左右表值内连接的sqlite优化
EN

Stack Overflow用户
提问于 2017-08-16 05:23:40
回答 1查看 19关注 0票数 0

我有两个表工具,tool_attribute。工具有12列,tool_attribute有5列。

表中需要的信息:

  1. 工具-系列,类型,id
  2. tool_attribute -键、值、id (将有多个条目)

现在我有大约18264的工具和255696的tool_attribute

当前查询:

代码语言:javascript
复制
select
    tool.refid,
    tool.serial,
    tool_attribute.value,
tool.type
from tool
inner join tool_attribute
    on tool.id = tool_attribute.id
where
    (tool_attribute.val LIKE '%t00%' or
     tool.serial LIKE '%t00%')
group by tool.refid
order by tool.serial asc;

这需要750毫秒左右,这是相当快,但我想让它更快。我在低内存的Windows6.0设备上运行这段代码,所以时间太长了。有什么办法能让我快点吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-16 05:33:37

可以尝试将索引添加到联接所涉及的列中:

代码语言:javascript
复制
CREATE INDEX idx_tool ON tool (id);
CREATE INDEX idx_tool_attr ON tool_attribute (id);

我认为,您的LIKE子句中的WHERE条件将排除在所涉及的列上使用索引的任何机会。原因是表单LIKE表达式%something消除了搜索B树的机会,B树使用从左到右的后缀来查找某些内容。如果您可以使用类似于WHERE的东西来重新定义您的LIKE 'something%'逻辑,那么也可以在那里使用索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45705649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档