Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Эффективный поиск по нескольким таблицам
 
 автор: alexander95   (10.08.2013 в 22:39)   письмо автору
 
 

Есть 20-30 таблиц вида supp_xxx, где xxx - число. Необходимо реализовать поиск по ним, по столбцам art_1, art_2, art_3. Причем в каких-то таблицах столбцов art_2, art_3 может не быть. Как примерно это сделать, "съедая" минимум ресурсов?

  Ответить  
 
 автор: Sfinks   (11.08.2013 в 00:26)   письмо автору
 
   для: alexander95   (10.08.2013 в 22:39)
 

JOIN и UNION тут "минимум" не съедят. Думаю минимум будет через хранимую процедуру, которая поочередно произведет поиск в каждой таблице.

  Ответить  
 
 автор: alexander95   (11.08.2013 в 21:14)   письмо автору
 
   для: Sfinks   (11.08.2013 в 00:26)
 

Можно пример?

  Ответить  
 
 автор: Sfinks   (12.08.2013 в 09:13)   письмо автору
 
   для: alexander95   (11.08.2013 в 21:14)
 

Пример можно:
DELIMITER $$

CREATE PROCEDURE search_3_tables( IN val varchar(10) )
BEGIN
  CREATE TEMPORARY TABLE titles(title varchar(50),tbl varchar(20)) ENGINE=MEMORY;
  INSERT titles SELECT name, 'authors' FROM authors WHERE name LIKE concat('%',val,'%');
  INSERT titles SELECT title, 'books' FROM books WHERE title LIKE concat('%',val,'%') OR description LIKE concat('%',val,'%');
  INSERT titles SELECT name, 'catalog' FROM catalog WHERE name LIKE concat('%',val,'%');
  SELECT * FROM titles;
  DROP TEMPORARY TABLE titles;
END$$

DELIMITER ;
использование:
call search_3_tables('фыва')

_______
P.S. Но вы же понимаете, что у вас что-то не так со структурой БД и об "эффективности" тут можно говорить очень относительно.....

  Ответить  
 
 автор: alexander95   (12.08.2013 в 18:06)   письмо автору
 
   для: Sfinks   (12.08.2013 в 09:13)
 

Никогда не поздно реорганизовать бд. Можно об этом с Вами тут проконсультироваться?

  Ответить  
 
 автор: Sfinks   (12.08.2013 в 19:29)   письмо автору
 
   для: alexander95   (12.08.2013 в 18:06)
 

Ну я тут не один... Есть и посильнее спецы! Вы спрашивайте, чем сможем - поможем. И лучше в новой теме.

  Ответить  
 
 автор: alexander95   (12.08.2013 в 23:11)   письмо автору
 
   для: Sfinks   (12.08.2013 в 19:29)
 

Я конкретно Вам больше остальных доверяю еще с давних пор :)
Хорошо, сейчас создам.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования