Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

MySQL: WHERE vs LIKE
Сообщения
Aliveon2

Здраствуйте.
//1 вопрос
Возникла проблема, есть таблица с полями `id`,`name`,`category`,`text`
Где в `text` очень много текста, изза чего скрипт очень медлено работал.
В списке где надо только `name`,`id` я выполнял запрос
$sql2=mysql_query("SELECT `name`,`id` FROM `blabla` WHERE `name`='bla bla' ");
и почемуто скорость работы не уменшилась. Я для теста удалил поле `text` и скрипт начал летать. изза етого я нашол только один выход. Создать новую таблицу с `id`,`text`. Но ето гемор. Тупой может вопрос, но как мне зделать чтобы если в таблице хоть 100 полей, а мне надо только 2 поля, то остальные 98 поля "не вызывались".

// 2 вопрос)
И еще, есть страницы, и категории. Но в странице надо указать несколько категорий. Ничего кроме типо "[category]bla1[/category][category]bla2[/category]" в голову от уже 3 дня не приходит.
И к чему я пишу, когда надо указать 1 только категорию ето " WHERE `category`='bla1' " но если 2 или больше " WHERE `blabla` LIKE '%[category]bla1[/category]%' "
На скорость очень повлеяет использевание LIKE в MYSQL запросе?

спасибо.

07 Дек 2011, 22:21
JoiNeD

1. Почитай про KEY/INDEX KEY
2. Почитай про поле типа SET + функцию FIND_IN_SET

07 Дек 2011, 22:32
Elime

по второму вопросу, примени связь типа "многие ко многим".

то бишь 3 таблицы в БД: pages, category, pages_category.
pages:
-id
-name
-text
category:
-id
-name
pages_category:
-id_page
-id_category

"На скорость очень повлеяет использевание LIKE в MYSQL запросе? "
зависит от количества записей в базе

07 Дек 2011, 22:37
Aliveon2

[quote="Elime"]по второму вопросу, примени связь типа "многие ко многим".

то бишь 3 таблицы в БД: pages, category, pages_category.
pages:
-id
-name
-text
category:
-id
-name
pages_category:
-id_page
-id_category

"На скорость очень повлеяет использевание LIKE в MYSQL запросе? "
зависит от количества записей в базе[/quote]

Ты меня несовсем может понял.
Я не знаю как зделать чтобы мож было вводить несколько категорий (1,2,4,и тд.) но при етом чтобы при выводе не использовать LIKE в запросе.

07 Дек 2011, 23:14
Elime

Aliveon2, я тебя правильно понял, применять LIKE там не нужно, это ты меня видать не понял, на, читай

07 Дек 2011, 23:21
JoiNeD

Elime, из за одного небольшого поля создавать еще одну таблицу... Не легче ли find_in_set воспользоваться?

07 Дек 2011, 23:39
Elime

JoiNeD, но мы же не знаем сколько у него там полей

я не знаю что такое find_in_set, по этому не могу спорить.

07 Дек 2011, 23:56
JoiNeD

Elime, http://yandex.ru/msearch?text=Mysql%20%d0%a4%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d1%8f%20find_in_set&clid=1453726&lr=221

07 Дек 2011, 23:59
Elime

JoiNeD, спасибо, почитаю

08 Дек 2011, 7:45
Aliveon2

спасибо всем кто помог)
тема исчерпана.

08 Дек 2011, 20:57
Ответить на тему