2013-11-15 3 views
-1

У меня есть массив некоторых строк в моем Java-коде. Я хочу проверить, имеются ли (и какие) значения в этом массиве в базе данных mySql, которую я использую. Способ, которым я пытался это сделать, - запросить базу данных для каждого отдельного значения в массиве. Я хотел знать, есть ли более эффективный способ сделать это? Спасибо заранее.Проверьте, есть ли набор данных в базе данных

В моей Java-код:

String[] arrProducts=new String[]{"AB","BC","CD","AE","fg","BV","etc"}; 

В базе данных MYSQL продуктов у меня есть productsInventory таблицу, которая имеет столбец ProductID. Поэтому в основном я хочу проверить, присутствуют ли все значения arrProduct в столбце productId вместо индивидуального запроса: Select * from ProductsInventory, где productId нравится «AB».

EDIT1: Так что моя таблица выглядит следующим образом:

ProductsInventory -> {ProductName, PRODUCTID}

право косить Я запрашивая таблицу, используя один запрос для каждого значения в моем массиве.

Например: Выберите * from ProductsInventory, где productId like 'AB';

Select * from ProductsInventory where productId like 'BC'; 
Select * from ProductsInventory where productId like 'CD'; 

SO в зависимости от количества элементов в моем массиве Мне нужно отправить несколько запросов.

EDIT 2: И мой массив может меняться в зависимости от взаимодействия пользователя. То, что вводит пользователь, хранится в моем массиве, и мне нужно проверить, присутствуют ли эти значения в таблице базы данных.

+1

Вы можете поделиться структурой таблиц и запросом? – Mureinik

ответ

0

Вы можете использовать следующие с «в» keyword.Just передать массив в качестве значения внутри «в» параметр полученный запрос будет выглядеть следующим образом ниже:

select * from ProductsInventory where productId in ("AB","BC","CD","AE","fg","BV","etc"); 

но в случае значительного снижения производительности, если массив слишком длинный.

-1

вы можете попробовать что-то вроде:

SELECT * from ProductsInventory where productId in ('AB,'BC','CD') 

это, вероятно, сэкономит ваше время, но в зависимости от Whats в базе данных и, как все структурировано это может быть довольно дорогим (время, обработка)

0

В качестве альтернативы структуре IN или поддержке регулярных выражений с помощью rlike вы можете использовать полнотекстовый поиск. Интегрированное решение может быть ограничено по скорости в функциональности, но сторонние решения (которые прекрасно сочетаются с MySQL и Java) могут обеспечить отличную производительность для сложных функций, таких как Sphinx или Solr, за счет дополнительных ресурсов: Full text options in MySQL that allows search in natural language.

Смежные вопросы