在这个表中,我有一个有汽车代码的参考表(汽车制造,汽车型号,汽车种类等等),我有代码。例如:
+--------+--------+--------+--------+
|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:
+--------+--------+--------+
|cm_code |cm_id |cm_name |
+--------+--------+--------+
|1 |22 |mercedes|
|2 |26 |bmw |
|3 |39 |audi |
+--------+--------+--------+例如,car_model:
+--------+--------+--------+
|co_code |co_id |co_name |
+--------+--------+--------+
|1 |458 |520I |
|2 |459 |520IA |
|3 |501 |523IA |
+--------+--------+--------+现在,我需要为用户选择的汽车制造(如果宝马只有宝马车型)的所有车型。一辆汽车可以有多种型号,因为我需要使用参考表来找到我可以展示的id女巫模型。我在路上使用SQLite select:
SELECT * FROM CAR_MODEL WHERE CO_CODE IN (Select DISTINCT CR_MODEL FROM CARS WHERE CR_MAKE="26") ORDER BY CO_ID ASC这项工作,并显示了好的结果,但我不确定这是最好的方式吗?
谢谢
发布于 2015-05-20 10:32:49
注意,大多数数据库在使用IN子句时创建一个子表,该子句将丢弃对referent表所做的所有索引。这可能成为大型数据集上的一个主要性能问题。
依赖于SQLite的版本,它支持内部联接子句:
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列来连接引用。
对于大型数据集,还应考虑匹配列索引以获得性能。
https://stackoverflow.com/questions/30346678
复制相似问题