ile OR koşuluMYSQL - Ben 3 Tablolar (3 Milyon satır var) CompanyMaster, Token1, Token2 ve ardından masa yapıdır
CompanyMaster, JOIN
CREATE TABLE `CompanyMaster` (
`CompanyUID` int(11) NOT NULL AUTO_INCREMENT,
`WebDomain` varchar(150) DEFAULT NULL,
`CompanyPrimaryName` varchar(200) DEFAULT NULL,
PRIMARY KEY (`CompanyUID`)
) ENGINE=InnoDB AUTO_INCREMENT=3941244 DEFAULT CHARSET=latin1
Token1
CREATE TABLE `Token1`(
`CompanyUID` int(11) NOT NULL,
`Token` varchar(50) NOT NULL,
KEY `Token` (`Token`),
KEY `CompanyUID` (`CompanyUID`),
CONSTRAINT `CompanyAlias4_ibfk_1` FOREIGN KEY (`CompanyUID`) REFERENCES `CompanyMaster` (`CompanyUID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Token2
CREATE TABLE `Token2` (
`CompanyUID` int(11) NOT NULL,
`Token` varchar(100) NOT NULL,
KEY `Token` (`Token`),
KEY `CompanyUID` (`CompanyUID`),
CONSTRAINT `CompanyAlias5_ibfk_1` FOREIGN KEY (`CompanyUID`) REFERENCES `CompanyMaster` (`CompanyUID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
WebDomain'i Token1 ve Token2 tablolarını kullanarak CompanyMaster tablosundan almak istiyorum.
Sorgu i
SELECT WebDomain FROM CompanyMaster WHERE CompanyUID IN (
SELECT CompanyUID FROM Token1 WHERE Token='appleinc'
UNION
SELECT CompanyUID FROM Token2 WHERE Token='d012233:q122100:')
Bu sorgu sonucu elde etmek için yaklaşık 30 saniye sürer, is kullanıyorum. Yalnız alt sorgusu çalıştırdım, < 100 mili-second.So problemi IN koşulu ile alıyor.
I katılması ile sorgu yerini aldı ve bu < 200 msSELECT c.CompanyUID FROM `CompanyMaster` c
JOIN `Token1` tk1
ON tk1.CompanyUID = c.CompanyUID AND tk1.Token= 'appleinc'
JOIN `Token2` tk2
ON tk2.CompanyUID = c.CompanyUID AND tk2.Token= 'd012233:q122100:'
Ancak yukarıdaki terimi sorun yürütülüyor olduğu, tk1.Alias = 'Khronos Group'dan lisanslı Apple' ya da tk2.Alias = 'd012233 edin: q122100: 'boş satır olarak çıktı veriyor. Ama tek bir koşul eşleştiğinde bile eşleşen satırları istiyorum.
Lütfen bunun nasıl çözüleceğine nasıl yardımcı olabilirim? Ve ayrıca sorgunun 10 milisaniyeden daha az bir zamanda yürütülmesini istiyorum. Bu ulaşılabilir mi?
Cevaplardan herhangi biri ihtiyaçlarınızı karşıladı mı? Bir yorum bırakabilir misiniz? – trincot