MySQL通过Id和超级字符串的组合进行选择
这与中的一个老问题有关,但这个问题不同 我有一个MySQL表格,里面有许多“客户”的web“文章”。该表名为ArticleTable,它有几个字段,其中两个是: CustomerId=拥有该商品的客户的Id。MySQL通过Id和超级字符串的组合进行选择,mysql,sql,optimization,indexing,substring,Mysql,Sql,Optimization,Indexing,Substring,这与中的一个老问题有关,但这个问题不同 我有一个MySQL表格,里面有许多“客户”的web“文章”。该表名为ArticleTable,它有几个字段,其中两个是: CustomerId=拥有该商品的客户的Id。 ArticleId=文章url的子字符串,唯一标识文章url 现在,在运行时给定一个客户Id+一个网页的完整url,我需要查找表中是否有与此完整url匹配的客户文章。我能想到的一个明显的疑问是: SELECT * FROM ArticleTable WHERE CustomerId = g
ArticleId=文章url的子字符串,唯一标识文章url 现在,在运行时给定一个客户Id+一个网页的完整url,我需要查找表中是否有与此完整url匹配的客户文章。我能想到的一个明显的疑问是:
SELECT * FROM ArticleTable
WHERE CustomerId = givenCustomerId
AND 'givenCompleteUrl' LIKE CONCAT('%', ArticleId, '%')
现实情况是,我可能有很多客户,但每个客户只有几篇文章。然而,在上面的查询中,我不能完全控制MySQL的选择机制。因此,问题是:
我讨厌你的第二个where条款。它可能很慢,在某些情况下实际上是不正确的。最好在PHP中提取ArticleId,然后简单地执行以下操作:
SELECT * FROM ArticleTable
WHERE CustomerId = ?
AND ArticleId = ?
为了回答您的问题,我认为如果您使用此查询,索引
(ArticleID,CustomerId)
就足够了。MySQL应该足够明亮,可以使用索引按客户id进行搜索,然后检查url。