У меня есть таблица с 3 столбцами:Наиболее производительный SQL
item_id (decimal), key_name (varchar), key_string_value (varchar)
Он населен сотнями и тысячами строк. Ниже приведены первые 6 строк, которые дают вам представление о данных.
1. 1 product product1
2. 1 topic topic1
3. 1 segment segment1
4. 2 product product2
5. 2 topic topic1
6. 2 segment segment1
Каждый отдельный item_id
имеет 3 строки, связанную с ним, и описывающей его метаданными, как тема, продукт, сегмент. Я пытаюсь написать SQL-запрос, который делает следующее и работает очень хорошо.
Теперь мне нужно, чтобы выбрать все item_ids, который будет достаточно определенное сочетание этих метаданных, например:
- пойми меня все
item_id
«s, для которыхtopic='topic1'
иproduct='product2'
иsegment='Segment1'
Я пытаясь самостоятельно присоединяться и коррелировать запросы, но я не уверен, какое направление следует продолжать для достижения наилучшей производительности. Любая помощь будет оценена по достоинству.
Это зависит от используемой СУБД - то, что оптимально для MySQL, может быть не оптимальным для MSSQL и т. Д. Кроме того, важно знать, какие индексы существуют, и если они кластеризованы. Можете быть более конкретными? –
Есть ли в вашей таблице первичный ключ? Есть ли у него какие-либо (другие) индексы? Являются ли 'key_string_value' для одного и того же ключевого имени в основном по-разному или наиболее привлекательны из небольшого числа альтернатив? –
@Eugen: Мы закончим использование Oracle для этого. Пока мы тестируем MySQL. Существует первичный ключ, который является просто столбцом с номером autonumbered. Существует составной индекс на key_value и key_string_value. – Forexlead