代码之家  ›  专栏  ›  技术社区  ›  shay te

使用带有常量字符串的mysql EXISTS

  •  0
  • shay te  · 技术社区  · 9 年前

    你能帮我理解两者的区别吗 EXISTS IN 使用mysql?。
    在我使用的应用程序中 在我的询问中, 由于我使用memcached来存储IN值,
    所以我发现存在得更快, 例如:

    String my_chached_string = Memecached.get('somekey')
    "SELECT * FROM Table t WHERE t.fromId IN (" + my_chached_string + ")"
    

    我的问题是,有没有一种方法可以以相同的方式使用EXISTS,使用常量值?

    非常感谢。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Rick James    9 年前

    以下是一些常见的编码模式:

    WHERE col = 'string'
    WHERE col IN ('string') -- same as above
    WHERE col IN ('string1', 'string2')
    WHERE EXISTS ( SELECT * FROM tbl WHERE ... )
    

    现有的解决方案实际上是解决不同的情况;我不明白你为什么把它扔进去。即使有一个等效的EXISTS模式,它的效率也必然会降低。

    这种模式效率极低:

    WHERE col IN ( SELECT ... )
    

    通常可以通过转换为JOIN来提高效率。