Автор Тема: огромный WHERE  (Прочитано 6976 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« : 28 Января 2004, 15:02:53 »
вот 10 позиций по которым можно делать выборки, в
зависимости от того что надо юзеру:
   user_nickname varchar(30NOT NULL,
   
user_age date DEFAULT \'0000-00-00\',
   user_foto1 varchar(50),
   user_foto2 varchar(50),
   user_foto3 varchar(50),
   user_country_id smallint(4) DEFAULT \'0\',
   user_city_id smallint(6) DEFAULT \'0\',
   user_icq int(11) DEFAULT \'0\',
   user_sex tinyint(4) DEFAULT \'0\' NOT NULL,
   user_email varchar(50) NOT NULL,

можно ли как нибудь укоротить WHERE, а то оная
получается до неприличия длиной со своими AND и OR?
Hello world!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
огромный WHERE
« Ответ #1 : 28 Января 2004, 15:11:26 »
здесь форум о базах данных, а не о приличиях.

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

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« Ответ #2 : 28 Января 2004, 15:30:55 »
Я спросил о производительности, ничего мол страшного, если в WHERE будет достаточно большое условие?

[OFF]Советую не делать скоропалительных выводов[/OFF]
Hello world!

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
огромный WHERE
« Ответ #3 : 28 Января 2004, 16:20:49 »
Petroffs
расслабься, при запросе к БД надо описывать точно, какие тебе данные нужны, если ты не сделаешь это в запросе, тебе прийдется делать это в программе, поэтому, если для описания условий, тебе понадобится десять AND то их надо писать! в конце-концов, если ты уменьшишь количество AND то в результате запроса могут появиться данные, которые не удовлетворяют условиям и тебе их надо будет тоже отфильтровать, эта задача ляжет на плечи твоего приложения, т.е. ты все равно потеряешь время на обработку, подумай, не лучше ли предоставить обработку данных тому серверу, который был написан специально для этого?

В случае с UPDATE тебе вообще надо строго описывать ВСЕ условия после where иначе ты рискуешь повредить записи, которые ты не хочешь менять.
работа в Украине

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« Ответ #4 : 28 Января 2004, 16:55:12 »
Цитировать
Yukko:
подумай, не лучше ли предоставить обработку данных тому серверу, который был написан специально для этого

Вот этой фразы я что-то совсем не понял...
или может слово "сервер" подразумевает слово "скрипт"?
Hello world!

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« Ответ #5 : 28 Января 2004, 16:57:20 »
запрос то работает, но при 2 000 записей в таблице, процессор напрягается вообще-то, но этого похоже неизбежать..
Hello world!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
огромный WHERE
« Ответ #6 : 28 Января 2004, 17:31:38 »
слабый у тебя какой-то процессор.

если же учесть, что в поиске одновременно будут участовать максимум 2-3 поля, то об этой, высосанной из пальца, проблеме можно забыть

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« Ответ #7 : 28 Января 2004, 17:36:51 »
да у меня на компе все работает шустро, но боюсь, что при
выкладке к хостеру будут различные ограниченя на
оперативную память и еще какие-нибудь там штуки...
в общем - то у меня на компе, а то - у хостера

и 2-3 поля - это минимум, а максимум, около 6ти получается
Hello world!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
огромный WHERE
« Ответ #8 : 28 Января 2004, 17:44:25 »
Цитировать
Petroffs:
но боюсь

а ты не бойся.

Цитировать
Petroffs:
максимум, около 6ти получается

приведи пример такого поиска.
Условие: человек, который ищет - не дебил.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
огромный WHERE
« Ответ #9 : 28 Января 2004, 17:45:39 »
ЗЫ. действительно "большой" where - это на экран и более.
а у тебя - это самый обычный.

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« Ответ #10 : 28 Января 2004, 17:51:23 »
Аха, завтра покажу, щас я на работе, а то страшное
where дома покоится... а может вовсе и не страшное:)
Hello world!

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
огромный WHERE
« Ответ #11 : 28 Января 2004, 17:55:18 »
Цитировать
Petroffs:
Вот этой фразы я что-то совсем не понял...
или может слово "сервер" подразумевает слово "скрипт"?

Обработку ДАННЫХ надо предоставлять серверу баз ДАННЫХ.

[OFF]я что не по-русски пишу?[/OFF]
работа в Украине

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« Ответ #12 : 28 Января 2004, 17:59:54 »
Цитировать
Yukko:
Обработку ДАННЫХ надо предоставлять серверу баз ДАННЫХ.


[OFF]ОК... слышу я, слышу ;)[/OFF]
Hello world!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
огромный WHERE
« Ответ #13 : 28 Января 2004, 19:43:05 »
зачем домой ходить?
мы имеем 10 полей.
из них по трем поиск не производится.
   user_foto1 varchar(50),
   user_foto2 varchar(50),
   user_foto3 varchar(50),

два уникальных, и искать в комплексе бессмысленно
   user_icq int(11) DEFAULT \'0\',
   user_email varchar(50) NOT NULL,

Два взаимоисключающих.
   user_country_id smallint(4) DEFAULT \'0\',
   user_city_id smallint(6) DEFAULT \'0\',

Из них берется одно плюс лежащие ниже три
   user_nickname varchar(30) NOT NULL,
   user_age date DEFAULT \'0000-00-00\',
   user_sex tinyint(4) DEFAULT \'0\' NOT NULL,

итого - максимум 4 если делать нечеткий поиск по имени.
по емейлу, правда, тоже можно сделать лайк.
Но это будет 5 максимум, которые пересекаться будут в совершенно уникальных случаях, когда человек ищет одновременно по части имени и емейла.

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
огромный WHERE
« Ответ #14 : 29 Января 2004, 10:00:14 »
зачем мне лайк использовать?
это если по нику или по емаил только, правильно?

я тут селектом выборку делаю

Цитировать
RomikChef:
Два взаимоисключающих.
user_country_id smallint(4) DEFAULT \'0\',
user_city_id smallint(6) DEFAULT \'0\',


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

Цитировать
RomikChef:
зачем домой ходить?
мы имеем 10 полей.
из них по трем поиск не производится.

в фото индексы стоят, мол 1 - да, 0 - нет,
и поиск по ним производится, либо по фото1 либо 2 либо 3..

но суть твоего пояснения ясна... спасибо.....
Hello world!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28