代码之家  ›  专栏  ›  技术社区  ›  yuk

在sql where…in子句中使用文本文件中的术语

  •  4
  • yuk  · 技术社区  · 16 年前

    我正在用

    ...
    where name in ("term1","term2","term3")
    

    我想从每行一个术语的文本文件中获取术语列表。我该怎么做?

    如果这个条款列表会变得很大呢?比如10公里。这是有效的还是我应该用另一种方法?可能是临时表和连接?数据库是只读的。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Ashish Gupta Shiva    16 年前

    我对mysql不太熟悉,但我看到这样的情况,您可以按照您在问题中的建议在表中加载文本文件:

    LOAD DATA INFILE 'file.txt'
      INTO TABLE t1
      (column1, column2, column3);
    

    然后使用连接获取数据。

    细节 here .

        2
  •  1
  •   Topher Fangio    16 年前

    通常,使用 WHERE ... IN 在几十万个条件之后,语句变得非常慢。

    另外,如果表是只读的,那么您将无法添加索引以使其更快,因此,正如astander所说,我建议使用一个带有连接的临时表。

        3
  •  0
  •   Adriaan Stander    16 年前

    我想你最好的办法是把它读成 专门用于此查找的临时表 .

    这样就可以索引表,并使用 子查询中的内部联接/位置 .