Mysql 大型WHERE查询

Mysql 大型WHERE查询,mysql,sql,where-clause,Mysql,Sql,Where Clause,查询每行最多包含500个比较的大型数据库的最佳方法是什么 SELECT * FROM table WHERE column = x OR column = y OR column = z OR ...(x500) 我估计这个表在短期内可以增加到数千个条目。 谢谢使用WHERE列INx,y,z.也许你可以使用in子句 从“asdf”、“aqwer”中的列所在的表中选择* 另外,您可能需要创建一个包含允许值的视图,然后 select * from table where column in (se

查询每行最多包含500个比较的大型数据库的最佳方法是什么

SELECT * FROM table WHERE column = x OR column = y OR column = z OR ...(x500)
我估计这个表在短期内可以增加到数千个条目。
谢谢使用WHERE列INx,y,z.

也许你可以使用in子句

从“asdf”、“aqwer”中的列所在的表中选择*

另外,您可能需要创建一个包含允许值的视图,然后

select * from table where column in (select your_field_name from your_view)

您最好使用IN查询:


这至少会使它更具可读性,而且我认为应该会提高性能。

如果您正在做一些。。。比如说少于20个,你可以用一个IN。。。。条款然而,如果你正在做一些通常会定期跨越100或1000的事情,我会使用一个只包含columnX值的临时表,并在其中插入所有可能的值。。。然后,使用此临时表作为其他连接的基础来查询连接

select YT.*
   from
      JustValuesTable JVT
         Join YourTable YT
            ON JVT.ColumnX = YT.ColumnX
   rest of query...

你每次都在同一个专栏上进行测试吗?可能有更好的方法,你能发布你将要选择的数据类型吗?比较会很长,或者更具体地说是facebookids@Mr47是的,每次都是同一列,您测试的所有值的来源是什么?它是数据驱动的,还是用户界面驱动的?谢谢你,我应该多读一点:我只是想要一些暂时有效的东西,所以我会在稍后研究优化和设计。好主意谢谢伙计:还会在其他几个专栏上进行比较,这样看起来不错。如果where子句中的值每次都不同,那么你的方法就是一个好主意。否则,视图或普通数据表就可以了。大多数数据库都有一个语句大小的上限,并且对in列表中的值也有一个限制。这里的问题是所有可能值的集合都很大,facebook Accounts类型的largeIn子选择的数量是性能杀手,你可以理解为什么
select YT.*
   from
      JustValuesTable JVT
         Join YourTable YT
            ON JVT.ColumnX = YT.ColumnX
   rest of query...