CREATE TABLE IF NOT EXISTS `videolar` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`adi` varchar(225) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Tablo döküm verisi `videolar`
--
INSERT INTO `videolar` (`id`, `adi`) VALUES
(1, 'örnek video'),
(2, 'do?a belgeseli');
-- --------------------------------------------------------
--
-- Tablo için tablo yapısı `video_ekleri`
--
CREATE TABLE IF NOT EXISTS `video_ekleri` (
`ek_id` int(11) NOT NULL AUTO_INCREMENT,
`video_id` int(11) NOT NULL,
`key` varchar(225) NOT NULL,
`value` varchar(225) NOT NULL,
PRIMARY KEY (`ek_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Tablo döküm verisi `video_ekleri`
--
INSERT INTO `video_ekleri` (`ek_id`, `video_id`, `key`, `value`) VALUES
(1, 1, 'oto', 'acik'),
(2, 1, 'reklam', 'kapali'),
(3, 1, 'yorum', 'kapali'),
(4, 2, 'yorum', 'acik'),
(5, 2, 'reklam', 'kapali'),
(6, 2, 'tarih', '06.02.2013');
video_id key value
1 yorum kapali
2 yorum acik
Verdiğiniz örnekten edindiğim izlenim kadarı ile; yukarıdaki tablo verisi, kötü yapılandırılmış bir tablo şemasını gözler önüne seriyor. Öncelikle "video_ekleri" gerçekten gerekli bir tablo mu? Eğer tablodaki 'oto', 'reklam', 'yorum' ve 'tarih' gibi alanlar "video" tablosu ile bire-bir ilişki içerisinde ise, mantıken "video_ekleri" tablosundaki satırların, "video" tablosunda sütün olarak belirlenmeleri daha gerçekçi. Bu satırlar dışında kalacak olan ve videolar tablosuna sütün olarak eklenemeyecek satırlar varsa, bunları da "metalar" tablosu altında herhangi bir "key" belirtmeden direkt toplamanızı öneririm.
Eğer "meta" dediğiniz bilgiler, "video_ekleri" tablosundaki değerler ise istediğiniz sonuçları şu şekilde alabilirsiniz;
SELECT *
FROM ((SELECT * from videolar limit 5) t1)
INNER JOIN video_ekleri t2 ON t1.id = t2.video_id
Eğer gerekli index düzenlemelerini yaparsanız herhangi bir performans sorunu ile karşılaşmazsınız ancak, yine de, öncelikle tablo yapılarınızı tekrar gözden geçirmenizi öneririm. Mantığa daha uygun bir tablo yapısı ile, daha basit bir sorgu kullanarak, daha fazla performans elde edebilirsiniz.