За последние 24 часа нас посетили 35063 программиста и 1758 роботов. Сейчас ищут 822 программиста ...

Что работает Быстрее?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Vladsss, 18 дек 2007.

  1. Vladsss

    Vladsss Активный пользователь

    С нами с:
    17 июн 2007
    Сообщения:
    22
    Симпатии:
    0
    Задался вопросом, что работает быстрее и с меньшей нагрузкой на сервер...
    1. Текст храниться в базе данных (MYSQL) в поле text, и в файле file.txt. Текст совершенно одинаковый. Что лучше использовать первое или второе, если нужно вывести этот текст на сторонней странице.
    2. Аналогичная задача. Есть таблица базы данных с полями int, по которым идет выборка (например выбока тех строк в котором поле id имеет в своем числе цифру 1). И другая таблица в которой храниться уже результат выборки (то есть все строки из таблицы после попадания в базу сразу записываются в поле типа text этой таблице, если в поле id новой строки есть 1.) Что быстрее будет выведено на страницу, с меньшей нагрузкой на сервер.
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    если это один текст, то в файле. если нужно его/по нему искать - по разным условиям - то в базе. Но это некритично, тормоза будут не тут. Для тебя важнее удобство работы с базой.

    задача дурацкая. Вообще, единственная причина почему не использовать базу для хранения данных (не файлов) - у хостера ограничения на количество запросов.
     
  3. Vladsss

    Vladsss Активный пользователь

    С нами с:
    17 июн 2007
    Сообщения:
    22
    Симпатии:
    0
    Просто читал, что хранение большого объема информации в поле типа text замедляет работу всей системы при работе с этим полем для его вывода например. Также читал, что сложные запросы (выборка по нескольким полям из нескольких таблиц), также замедляет работу. Вот и хотелось узнать у специалистов что лучше использовать:
    Формировать вывод на страницу при каждом обращении используя "сложный селект из двух таблиц", или при занесении в базу новых данных сразу формировать поле с уже выбранными значениями добавляя новые к старым, и уже его выводить используя "простой" селект, именно данную сформированную последовательность.

    Надеюсь более понятно изложил проблему.
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    где
    понял ничего. пример?
    на баш.
    Поле текст предназначено для хранения текстовых данных переменной длинны.

    тормоза навскидку могут быть только если ты делаешь БОЛЬШУЮ выборку и пытаешься ее всю сортировать. Но пока на эту тему не заморачивайся, важнее просто продумать логику приложения. Проблема тормозов компов сейчас стоит менее остро, чем проблема затрат времени людей.
     
  5. Vladsss

    Vladsss Активный пользователь

    С нами с:
    17 июн 2007
    Сообщения:
    22
    Симпатии:
    0
    Пример. Таблица table c полями id(int auto_increment), pole1(int), pole2 (varchar). В нее хранятся десятки тысяч записей, и прибовляются новые постоянно. В pole1 хранятся числа - любые которые позволяет хранить int. Нужно пользователю выводить , например, все те те записи где в поле pole1 присутствует 1 тоесть 1,10,11,21,...100,101... .Сортировка ORDER BY id

    Далее, Кроме таблицы table из первого примера, есть еще таблица alltbl с полем ptxt (text), куда при каждом заносе новой информации в таблицу table, в поле ptxt заносится (прибавляется к существующему) значения id(int auto_increment), pole1(int), pole2 (varchar) только что занесенные в базу, при условии, что в поле pole1 содержится 1.

    Теперь на страницу заходят 100000 в сутки. И каждому нужно вывести все значения из таблицы table, где в поле pole1 присутсвует 1.

    Что будет работать быстрее. Постоянная выборка из базы с сортировкой по id, или выборка из базы текста (довольно большого объема), который будет храниться сразу в одном значении. Аналогично спрашиваю про файлы (вместо занесения в БД в таблицу alltbl, значения приписывается в файл, а файл цепляется инклудом например).
    Вопрос чисто теоретический. Потому как значения вносятся единожды, а выборка идет постоянная. Что из этого будет работать быстрее чтобы не перегружать сервер.
    И еще что будет работать быстрее (с наименьшей нагрузкой на сервер), если выборка будет не по тем числам где присутствует 1, а просто по одинаковым числам (например все значения где в pole1 стоит 18). Таких записей тоже десятки тысяч. Желательно обосновать...
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    тут я писал про индексы.
    если выборка простая - то нет никакого смысла разделять данные. десятки тысяч одним запросом ты выводить не будешь. задачу видимо выдумал абы как, реальные задачи в других местах вызывают вопросы.
     
  7. Vladsss

    Vladsss Активный пользователь

    С нами с:
    17 июн 2007
    Сообщения:
    22
    Симпатии:
    0
    Да задача надуманная. И в реалии конечно такое никогда не встретится. Но, допустим я не умею пользоваться даже LIMITom :) и в данной формулировке, я пока не получил ничего вразумительного. Интерисует ответ именно в рамках данной поставленной задачи. Ответ интерисует именно с теоретической точки зрения