我在查詢中發生多個連接集。我有多個連接,因爲這些表的結構可以得到我想要的結果。我的主要連接,我分成三組,如下面評論。如果我只有一組,查詢時間相當快。當我有兩組活動時,查詢時間大約2分鐘。如果所有三組都如下所示激活,則需要很長時間。使用多個連接和Group_Concat優化php mySQL查詢
任何幫助優化此查詢將不勝感激。
$query = "SELECT `Databases`.*,
`DatabaseDescriptors`.*,
`DatabaseContents`.*,
`DatabaseAccessLevels`.*,
`Providers`.*,
GROUP_CONCAT(`Descriptors`.DescriptorName SEPARATOR ', ') as DescriptorNames,
GROUP_CONCAT(`Contents`.ContentName SEPARATOR ', ') as ContentNames,
GROUP_CONCAT(`AccessLevels`.AccessLevelName SEPARATOR ', ') as AccessLevelNames ";
$query .= "FROM `Databases` ";
// SET 1
$query .= "JOIN `DatabaseDescriptors`
ON `DatabaseDescriptors`.DatabaseID = `Databases`.DatabaseID ";
$query .= "JOIN `Descriptors`
ON `Descriptors`.DescriptorID = `DatabaseDescriptors`.DescriptorID ";
//SET 2
$query .= "JOIN `DatabaseContents`
ON `DatabaseContents`.DatabaseID = `Databases`.DatabaseID ";
$query .= "JOIN `Contents`
ON `Contents`.ContentID = `DatabaseContents`.ContentID ";
//SET 3
$query .= "JOIN `DatabaseAccessLevels`
ON `DatabaseAccessLevels`.DatabaseID = `Databases`.DatabaseID ";
$query .= "JOIN `AccessLevels`
ON `AccessLevels`.AccessLevelID = `DatabaseAccessLevels`.AccessLevelID ";
$query .= "JOIN `Providers`
ON `Providers`.ProviderID = `Databases`.ProviderID ";
$query .= "AND `Databases`.DatabaseID = 47";
謝謝戈登。我對mySQL的有限知識並沒有幫助,但我理解你的意思。我會嘗試這種方法。 – user2604924