Перегляньте відео нижче, щоб дізнатися, як встановити наш сайт як веб-програму на головному екрані.
Замітка: This feature may not be available in some browsers.
поддерживаю.индексы полюбому должны быть, и по хорошему там должно быть как минимум 2 таблицы...
утрируя - есть страны есть города в них.
все в одной таблице и ID соотвенно по порядку
+1разнеси страны и города в разные таблицы...
можешь вынести эту уникальную для страны часть в отдельное поле?из урла на страну я достаю уникальную для страны часть, по нему найдя через objurl строку страны получаю ID этой карты, а по нему получаю список городов на ней.
может быть ускорение. в любом случае разделение городов и стран со связкой по ключу, а так же использование индексов позволит снять нагрузку на базу. не за счет скорости ответов, а за счет уменьшения накладных расходов на выполнение запроса.предполагаемое кол-во записей 2000-3000 тысячи. думаете на таком кол-ве записей будет заметно ускорение?
разнеси страны и города в разные таблицы...
тоесть хотите сказать что если ТС разнесет данные на 2 таблицы то все начнет тормозить? тормозить оно не начнет, а нормальная форма будет более высокая, и это ок.С точки зрения оптимизаци данный совет - сомнительное улучшение, так как #__mapsfo, скорее всего, и есть таблица "городов".
Вообще совет "разнести таблицы" (привести таблицы к более высокой нормальной форме) на практике приводит к действиям, которые противоположны тем (действиям), которые предпринимают с целью "оптимизации (улучшения производительности) запросов по извлечению данных".
спасибо капитан очевидностьВ данном случае отсутствие отдельного запроса для выяснения идентификатора карты, join'а и наличие индекса для разрешения запроса получения идентификаторов городов по коду карты - будет оптимальнее.
тоесть хотите сказать что если ТС разнесет данные на 2 таблицы то все начнет тормозить? тормозить оно не начнет, а нормальная форма будет более высокая, и это ок.
...
это будет ок для простоты. следуйте принципам KISS (keep it simple, stupid) или как говорится в import this -- Simple is better than complex. Complex is better than complicated.Главный вопрос - для чего будет "ок" эта "более высокая" нормальная форма? Это будет "ок" для устранения т.н. аномалий обновления и (или) избыточности данных.
нет. степень нормализованности будет выше в случае с 2мя таблицами. фактВ приведенной ТС схеме избыточности не наблюдается и, вполне возможно, что степень "нормализованности" здесь выше, чем кажется некоторым ;-).
не факт. объем увеличится, но затраты на выборку не возрастут.О наличии/отсутствии проблем обновления данных в проведеной схеме - в данный момент ничего не известно.
В случае разнесения данных на 2 таблицы - во-первых, объём данных увеличится (в сравнении с изначальным объёмом исходной "неизбыточной" таблицы) и, как следствие, вычислительные затраты возрастут (факт);
не факт. даже с одной таблицей будет 2 поиска. если не верите -- посмотрите explainво-вторых - операция объединения таблиц (sql join) имеет гораздо больше возможностей неоптимального выполнения, чем операция выборки данных из одной таблицы (тоже факт).
это будет ок для простоты. следуйте принципам KISS (keep it simple, stupid) или как говорится в import this -- Simple is better than complex. Complex is better than complicated.
нет. степень нормализованности будет выше в случае с 2мя таблицами. факт
не факт. объем увеличится, но затраты на выборку не возрастут.
не факт. даже с одной таблицей будет 2 поиска. если не верите -- посмотрите explain
Вот и я.
Пока я решил оставить как есть, разве что добавил индекс по mapid3
Честно говоря разделение на 2 страницы грозит мне кучей гемора и переписыванием сотен строчек кода. Мне сейчас только этого и не хватает![]()
Две таблицы - это сложнее чем одна, так как две сущности это две сущности, а не одна.
какая разница 2 раза осуществить поиск в одном индексе, или по одному поиску в 2х индексах?Два простых поиска - это лучше, чем поиск вложеный в другой поиск.
Увеличение объёма данных уменьшит эффективность операций чтения, так как нужно будет прочитать больше данных.
Чем меньше данных нужно прочитать - тем быстрее завершаются операция чтения.
В случае объединения двух таблиц, нужно прочитать индекс первой таблицы (если необходимо), саму таблицу, индекс второй таблицы (для поиска связанных записей) и вторую таблицу.
В предлагаемой мной схеме можно прочитать только один двухстолбцовый индекс без обращения к таблице вообще.
Какое такое множество? Вы о чем? Это факт? Откуда он высосан? Где эти приложения? Что за голословие в треде? Где модератор? лолО негативном влиянии нормализации на производительность наглядно свидетельствует тот факт, что существует множество "теоретически верных" приложений с реальными проблемами производительности.
Если запрос остался в виде подобном "SELECT id FROM table WHERE mapid3 IN (SELECT mapid3 FROM table WHERE url LIKE '%url1%')", (поиск по mapid3 и вывод только поля id во "внешнем" запросе) то специализированный индекс по двум столбцам (mapid3, id) будет полезнее