我想在一行中存储多个id(int),我只看到Varchar,我使用逗号。
原因是提高效率:
在插入/更新时,此ID会定期更改,因此如果我存储40个ID,而不是执行40次删除和40次插入,我只需执行1次更新。
然后我使用这些数据来生成带有IN(id,id2,id3)的选择查询,如果我用低效的方法选择40行(<40>更大的索引或表列中的)效果很好,但我更喜欢做1行方法,问题是它是一个字符串,&#39; id,id2,id3&#39;并且它不起作用,它只转换为int第一个数字,与CAST或CONVERT转换为int相同。
我发现了一个使用第二个表的方法,但你必须存储所有的id,这是不可能的,它们太多而且每秒都会创建,这样效率很低。
我认为应该有一些东西,它是如此简单和有用,但我找不到任何有效而简单的方法将字符串转换为逗号分隔的整数列表。
总结:我想这样做,因为varch_ids是varchar&#39; 1,2,3,4&#39;在一行
SELECT * FROM main_table
WHERE main_id IN (SELECT varch_ids FROM table2 WHERE data_id=$x)
是的我可以执行两个单独的查询并处理字符串,但最重要和最常用的查询是SELECT,两个查询可能比在一个查询中选择40行慢。