我的网站包含一个带有两个表的 mysql 数据库。 一个表有一个名为“id_array”的字段,它包含一个如下所示的字符串: '1,3,7,78,89,102'。它代表第二个表中的一个 id 数组。
在第二个表中检索 ID 的最佳策略是什么? 我想要最快的方法。
目前我正在使用“SELECT * FROM first_table WHERE id IN (id_array)”。
我曾经一个一个地查询,但我认为它慢了很多。
如果有人能为数据库提供更好的结构,那就太好了。 这个结构是我想出的最好的结构,但我很确定它不是那么高效。 我需要一种快速方便的方法来从第一个表中找到属于该 id 的所有 id。
帮助将不胜感激。
最佳答案
逗号分隔值意味着数据是非规范化的——IN
子句对您不起作用,因为它适用于不同的值。
短期解决方案
使用MySQL's FIND_IN_SET function ,像这样:
SELECT *
FROM first_table
WHERE FIND_IN_SET(id, id_array)
长期解决方案
...不是以这种方式存储值,这意味着有一个表来存储不同的值和一个表来将不同值的表连接到原始表。即:
第一个表
- first_table_id(主键)
FIRST_TABLE_TYPE_CODES
- type_code_id(主键)
FIRST_TABLE_TYPE_MAP
- first_table_id(主键)
- type_code_id(主键)
关于mysql - 根据 id 的数组查询 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114618/