想象一下,你有這3個表:我如何加快這個簡單的查詢?
而且想象有根據該架構的海量數據。
當我運行這樣的查詢:
SELECT DISTINCT tPerson.Name, tPerson.Town
FROM tPerson
JOIN tPersonTypeCodeMap ON tPersonTypeCodeMap.PersonId = tPerson.Id
JOIN tPersonHobbyCodeMap ON tPersonHobbyCodeMap.PersonId = tPerson.Id
WHERE tPersonTypeCodeMap.TypeCode IN ('C', 'S', 'P')
它的工作原理相當快!
但是當我添加第二個條件(NOT IN)查詢需要年齡:
SELECT DISTINCT tPerson.Name, tPerson.Town
FROM tPerson
JOIN tPersonTypeCodeMap ON tPersonTypeCodeMap.PersonId = tPerson.Id
JOIN tPersonHobbyCodeMap ON tPersonHobbyCodeMap.PersonId = tPerson.Id
WHERE tPersonTypeCodeMap.TypeCode IN ('C', 'S', 'P')
OR tPersonHobbCodeMap.HobbyCode NOT IN ('SKATE','CLIMBING')
你能告訴我什麼是減慢查詢,我怎麼可以讓它運行得更快的原因是什麼?
是否有typecode上的索引而不是hobbycode上的索引? – Maess