我运行SQL查询的MySQL服务器用语... IN子句
...
where name in ("term1","term2","term3")
,我想每一个词从一个文本文件中获得的术语列表线。我怎样才能做到这一点?
如果这个术语列表会变大吗?例如10K。这会有效吗?或者我应该使用其他方法?可能是临时表并加入?数据库是只读的。
我运行SQL查询的MySQL服务器用语... IN子句
...
where name in ("term1","term2","term3")
,我想每一个词从一个文本文件中获得的术语列表线。我怎样才能做到这一点?
如果这个术语列表会变大吗?例如10K。这会有效吗?或者我应该使用其他方法?可能是临时表并加入?数据库是只读的。
我不是那么熟悉MySQL,但我看到这样的事情,你可以在一个表,你在你的问题建议加载一个文本文件: -
LOAD DATA INFILE 'file.txt'
INTO TABLE t1
(column1, column2, column3);
,然后使用连接获取数据。
详情here。
我认为你最好的选择可能是把它读入专门用于这个查找的临时表/表。
通过这种方式,您可以为表格编制索引,并使用内部连接/在子查询中的位置。
通常,使用WHERE ... IN
语句在几百个/千项之后变得非常缓慢。另外,如果表是只读的,那么你将无法添加索引以使其更快,所以,就像我说的那样,我会建议一个带有连接的临时表。
你有PHP或Perl吗?两者都可以很好地工作,并且有一点嵌套循环疯狂 – CheeseConQueso 2010-03-23 22:48:06
Perl会很好。你会展示一段代码作为答案吗? – yuk 2010-03-23 23:44:52