首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有更好的方法使用referent选择值(SQLite)?

是否有更好的方法使用referent选择值(SQLite)?
EN

Stack Overflow用户
提问于 2015-05-20 10:12:14
回答 1查看 74关注 0票数 2

在这个表中,我有一个有汽车代码的参考表(汽车制造,汽车型号,汽车种类等等),我有代码。例如:

代码语言:javascript
复制
+--------+--------+--------+--------+
|cr_code |cr_make |cr_model|cr_kind |
+--------+--------+--------+--------+
|1       |22      |345     |10      |     
|2       |22      |341     |5       |  
|3       |26      |458     |8       |  
|4       |26      |459     |77      |  
|5       |26      |501     |11      |  
|6       |39      |552     |2       |  
+--------+--------+--------+--------+

我有桌子car_make,car_model,car_kind to。

例如,car_make:

代码语言:javascript
复制
+--------+--------+--------+
|cm_code |cm_id   |cm_name |
+--------+--------+--------+
|1       |22      |mercedes|           
|2       |26      |bmw     |        
|3       |39      |audi    |   
+--------+--------+--------+

例如,car_model:

代码语言:javascript
复制
+--------+--------+--------+
|co_code |co_id   |co_name |
+--------+--------+--------+
|1       |458     |520I    |           
|2       |459     |520IA   |        
|3       |501     |523IA   |   
+--------+--------+--------+

现在,我需要为用户选择的汽车制造(如果宝马只有宝马车型)的所有车型。一辆汽车可以有多种型号,因为我需要使用参考表来找到我可以展示的id女巫模型。我在路上使用SQLite select:

代码语言:javascript
复制
SELECT * FROM CAR_MODEL WHERE CO_CODE IN (Select DISTINCT CR_MODEL FROM CARS WHERE CR_MAKE="26") ORDER BY CO_ID ASC

这项工作,并显示了好的结果,但我不确定这是最好的方式吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-20 10:32:49

注意,大多数数据库在使用IN子句时创建一个子表,该子句将丢弃对referent表所做的所有索引。这可能成为大型数据集上的一个主要性能问题。

依赖于SQLite的版本,它支持内部联接子句:

代码语言:javascript
复制
SELECT CM.* 
  FROM CAR_MODEL CM 
 INNER JOIN CAR_MAKE MK 
    ON CM.CO_CODE ON MK.CR_MODEL 
 WHERE MK.CM_NAME='BMW'

顺便说一句,您应该考虑使用SQLITE id列来连接引用。

对于大型数据集,还应考虑匹配列索引以获得性能。

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

https://stackoverflow.com/questions/30346678

复制
相关文章

相似问题

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