За последние 24 часа нас посетили 75807 программистов и 1940 роботов. Сейчас ищут 883 программиста ...

PDO быстрее mysql, в плане загрузки сайта или нет?

Тема в разделе "PHP для новичков", создана пользователем Katy93, 13 ноя 2019.

  1. Katy93

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

    С нами с:
    3 янв 2019
    Сообщения:
    69
    Симпатии:
    0
    Я правильно расставила индексы? Дело в том, что индексы в таблицу я ещё не добавляла, поэтому пример добавления индексов я нашла в интернете.
    Код (Text):
    1. CREATE TABLE `categoria` (
    2.   `id` int(2) NOT NULL,
    3.   `title` varchar(255) NOT NULL,
    4.   `title_url` varchar(255) NOT NULL,
    5.   `meta_k` text NOT NULL,
    6.   `meta_d` text NOT NULL,
    7.   `text` text NOT NULL,
    8.   `id_parent` int(11) NOT NULL DEFAULT '0',
    9.   `type` enum('cat','potcat','href') NOT NULL,
    10.   `stmap` enum('0','1') NOT NULL DEFAULT '0'
    11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    12.  
    13. ALTER TABLE `categoria`
    14.   ADD PRIMARY KEY (`id`);
    15.  
    16. ALTER TABLE `categoria`
    17.   MODIFY `id` int(2) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=136;
    18.  
    19. ALTER TABLE `categoria` ADD INDEX cat_index (id,id_parent);
    id - id категории
    id_parent - id подкатегории, пример на рисунке
    [​IMG]
    Код (Text):
    1. CREATE TABLE IF NOT EXISTS `data` (
    2.   `id` int(10) NOT NULL,
    3.   `cat` int(5) NOT NULL,
    4.   `iconpath` int(10) NOT NULL,
    5.   `title` varchar(255) NOT NULL,
    6.   `title_url` varchar(255) NOT NULL,
    7.   `description` text NOT NULL,
    8.   `keywords` text NOT NULL,
    9.   `meta_d` text NOT NULL,
    10.   `text` text NOT NULL,
    11.   `view` int(7) NOT NULL DEFAULT '0',
    12.   `author` varchar(100) NOT NULL,
    13.   `date` date NOT NULL DEFAULT '0000-00-00',
    14.   `img` varchar(255) NOT NULL DEFAULT '../../file/no-photo.jpg',
    15.   `hide` enum('show','hide') NOT NULL DEFAULT 'show',
    16.   `rating` int(10) NOT NULL DEFAULT '5',
    17.   `q_vote` int(10) NOT NULL DEFAULT '1'
    18. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
    19.  
    20. ALTER TABLE `data`
    21.   ADD PRIMARY KEY (`id`);
    22.  
    23. ALTER TABLE `data`
    24.   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1739;
    25.  
    26. ALTER TABLE `data` ADD INDEX info_index (id,cat);
    id - id статьи
    cat - id категории в которой находится эта статья
     
  2. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Katy93, представьте себе, что вы делаете хирургическую операцию кухонным ножом...
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    @Katy93, ну если стало работать быстрее, то правильно. А вообще, покажите запросы, которые пытаетесь ускорить
     
  4. Katy93

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

    С нами с:
    3 янв 2019
    Сообщения:
    69
    Симпатии:
    0
    В смысле показать запросы таблиц разве не достаточно? И как вообще проверить, что сайт стал грузиться быстрее. Есть какая-нибудь программа или же плагин проверяющий быстродействие запросов?
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Индексы ставят для ускорения конкретных запросов
    Можно засекать время. Можно по общему времени отклика сайта в браузере смотреть, это тут вам уже показывали.
     
  6. Katy93

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

    С нами с:
    3 янв 2019
    Сообщения:
    69
    Симпатии:
    0
    Я пока на тестовом сервере проверяю сайт, индексы в базу данных на хосте пока не добавляла.
    В смысле, что это значит?
    Индексы нужно ставить везде где id, включая идентификатор который ссылается на статьи из другой таблицы, связь один ко многим?
     
  7. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Представьте себя на хирургическом столе (тьфу-тьфу, это я чисто гипотетически)
    Хирург просит включить видосик на ютубе "как удалить аппендицит" и берёт в руки кухонный нож вместо скальпеля.
    Какие ваши действия (допустим наркоз вам еще не успели вкатить)?
    ___
    P.S. Я конечно слегка утрирую, но сайт сродни живому организму, без определённых знаний навредить гораздо проще, чем "полечить". Думайте.
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Индексы ставятся для того, чтобы ускорить те или иные запросы, на основе полей, для которых идёт поиск.
     
  9. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    Код (Text):
    1. CREATE INDEX meta_k ON categoria(meta_k);
    2. CREATE INDEX meta_d ON categoria(meta_d);
    3. CREATE INDEX id_parent ON categoria(id_parent);
    4. CREATE INDEX type ON categoria(type);
    5. CREATE INDEX stmap ON categoria(stmap);
    6.  
    7. CREATE INDEX cat ON data(cat);
    8. CREATE INDEX meta_d ON data(meta_d);
    9. CREATE INDEX hide ON data(hide);
    10. CREATE INDEX rating ON data(rating);
    запустите это)) может поможет)) но это как пальцем в небо))
     
  10. Katy93

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

    С нами с:
    3 янв 2019
    Сообщения:
    69
    Симпатии:
    0
    Какой синтаксис для удаления индексов, на тот случай если вдруг, что-то пойдёт не так?
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  12. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Katy93, на тот случай если что-то пойдёт не так, должна быть копия рабочей БД. Это называется - backup.
    Но если вы об этом узнали только-то, то всё еще гораздо хуже, чем кухонный нож вместо скальпеля. Если вы про бэкап знаете и без меня, то вопрос про удаление звучит по крайней мере странно.
     
  13. Katy93

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

    С нами с:
    3 янв 2019
    Сообщения:
    69
    Симпатии:
    0
    Я про бэкап знаю, у меня и база данных есть и копия сайта. Просто не хочется лишний раз заморачиваться, так как база данных стала уже довольно солидной более 100 мб.
     
  14. Katy93

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

    С нами с:
    3 янв 2019
    Сообщения:
    69
    Симпатии:
    0
    Вот у меня например фильтрация данных происходит:
    Код (Text):
    1. WHERE id=$id_parent AND column_pos='lefttd' ORDER BY pos DESC
    Мне нужны индексы добавить в id, column_pos, а так же там где ORDER by поле "pos", я правильно поняла?