在深入研究这个问题之前,首先我将解释这种情况。我有两个表,如下所示:MySQL根据另一个表中的数据从一个表中返回结果
USERS TABLE
user_id
username
firstName
lastName
GROUPS TABLE
user_id
group_id
我想找回谁的名字的所有用户是LIKE“%FOO%”,谁是GROUP_ID一组的一部分=“givengid”
因此,查询想是这样的:
SELECT user_id FROM users WHERE firstName LIKE '%foo'"
我可以做一个用户定义的SQL函数,如ismember(USER_ID,GROUP_ID)如果用户是该组的一部分,0,如果他们将返回1不在上述select语句中的WHERE子句中。但是,这意味着对于名字与标准匹配的每个用户而言,必须通过其他数千个其他记录运行另一个查询才能找到潜在的匹配条目。
用户和组表将分别有几十万条记录。使用用户定义的函数方法还是使用UNION语句运行查询更传统?如果UNION方法最好,那么带有union声明的查询将是什么样子?
当然,我会运行基准测试,但我只想对这种情况的解决方案的可能范围以及通常最有效/最有效的解决方案有所了解。
好奇,INNER JOIN和just JOIN有什么区别? – user396404 2010-09-21 13:48:16
没有区别,JOIN是INNER JOIN的语法糖。 – 2010-09-21 15:18:45