- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Пока отцы не разошлись, земной вопрос: индекс на булевых полях (male/female) - зло?
Если столбец участвует в запросе, то на нём должен быть индекс.
Так же важный момент, что если в запросе в условии участвует более 1 столбца, то на всех них должен быть составной индекс в том же порядке как и в запросе.
Пока отцы не разошлись, земной вопрос: не составной индекс на булевых полях (male/female) - зло?
не составной индекс булевый это типа одна колонка где 2 значения? Ну если в целом у вас там во всех строках одно значение то оно не даст буста
то на всех них должен быть составной индекс в том же порядке как и в запросе
Это не совсем так, точнее это совсем не так =)) в каком бы порядке вы не составили индекс расположение в where полей индекса никак не влияет на его использование
типа одна колонка где 2 значения
ну да. true и false примерно поровну. Индекс из одного поля, другие колонки в отборе не участвуют и индекс не содержит включенных полей для select"a примерно такого вида:
select field1, field2, ... where indexedfield = 0
И второй момент select count() с аналогичным отбором.
Откуда у меня такие сомнения? При отборе с результатом, скажем 50% строк, сервер сначала перебирает индексы для получения ПК, а потом ищет кластеризованный первичный индекс для получения остальных полей строки. Не дешевле ли сразу сканировать всю таблицу?
ну да. true и false примерно поровну. Индекс из одного поля, другие колонки в отборе не участвуют и индекс не содержит включенных полей для select"a примерно такого вида:
select field1, field2, ... where indexedfield = 0
И второй момент select count() с аналогичным отбором.
Откуда у меня такие сомнения? При отборе с результатом, скажем 50% строк, сервер сначала перебирает индексы для получения ПК, а потом ищет кластеризованный первичный индекс для получения остальных полей строки. Не дешевле ли сразу сканировать всю таблицу?
Я если честно немного не понимаю про что речь =))) Запрос (простой) может использовать только один индекс. В вашем случае если у вас 50% одно значение и 50% другое, то БД будет перебирать только пол таблицы, но это все еще очень дорого если таблица большая, если конечно у вас фильтр не по единственному этому полю, а то если поле одно то и перебирать он не будет. Скажем так, индекс отрезает от таблицы кусок по которому он будет делать поиск и чем больше этот кусок тем дольше будет поиск
Админка битрикса
Я прочитал по диагонали, но мне кажется там проблема в том что транзакции включают инсерты и конечно даже 5к транзакций в секунду это достаточно большая нагрузка на машинку в 8Гб и 4 ядра. Тут люди про сайты на DLE втирают что им ID числовой в урле даст какой то буст производительности =))
Это не совсем так, точнее это совсем не так =)) в каком бы порядке вы не составили индекс расположение в where полей индекса никак не влияет на его использование
Я просто не хотел вдаваться в дебри о селективности.
Я всегда в голове держу мысль, что сам запрос уже сделан идеально и просто по нему надо повторить индекс, это как минимум удобно и легко запомнить 😊
Но опять же, если сильно вдаваться, то есть хорошая статья:
https://highload.today/indeksy-v-mysql/
Там рассказано про порядок столбцов в индексах. Там есть разница, но надо смотреть все запросы и тестировать их.
Я просто не хотел вдаваться в дебри о селективности.
Так там описывается важность последовательности полей при создании составного индекса, а не при выборке по нему =)) Порядок при создании составного индекса влияет на эффективность и это да, но если честно я ни разу не замечал чтобы порядок колонок в запросе влиял на применение индекса, а миф этот почему то постоянно ходит, тогда бы мы прежде чем писать запрос шли бы смотрели как был создан составной индекс.
Так там описывается важность последовательности полей при создании составного индекса, а не при выборке по нему =)) Порядок при создании составного индекса влияет на эффективность и это да, но если честно я ни разу не замечал чтобы порядок колонок в запросе влиял на применение индекса, а миф этот почему то постоянно ходит, тогда бы мы прежде чем писать запрос шли бы смотрели как был создан составной индекс.
Да я если честно хрен на это забивал, и просто делаю по порядку, чтобы удобнее было смотреть при составлении этого индекса. Поэтому и писал, что легче просто это.
В реальности мало кто заморачивается этим т.к.
1. Экономия на спичках, когда выполняется ~150 запросов для генерации страницы, там эти копейки не сильно важны на 1 запросе
2. БД сами там внутри совершенствуются и умеют/учатся оптимизировать это всё
3. Время программиста деньги. Сидеть над каждым запросом это слишком затратно, лучше на страницу кэш повесить
Короче это разговор уже более философский.
Добавил туда более 100 тысяч записей, и сделал код, ищущий записи по разным полям, обычный селект-where
И получил интересные результаты:
результат 3 - по неиндексированному полю title - ожидаемо он на порядок меньше. А вот с айди и слагом интересно. Дело в том что первый запрос по айди, где для индексации используется винарное дерево - сильно просаживается по скорости, второй и последующий - такой же или немного быстрее чем поиск по текстовому полю с индексом в виде хэш
А хэш всегда стабилен по скорости, независимо от количества запросов.
Кто-то может это обьяснить?