2015-06-27 2 views
2

Здравствуйте, я работаю в web like this с этой структуройMysql с несколькими LeftJoin

ALL Matchs Packets{ 
        Soccer{ 
           France{ 
            Liga A:{ 
              Team A vs Team B{ 
               Bettype A{} 
               Bettype V{} 
               Bettype AA{} 
               Bettype DD{} 
               } 
              Team C vs Team D{ 
.... 
               } 
              Team E vs Team F{ 
.... 
               }  
              } 
            Liga B:{...}          
            Liga C:{...} 
            } 
           Spain{ 
            Liga A: 
            Liga B: 
            Liga C: 
            } 
           England{ 
            Liga A: 
            Liga B: 
            Liga C: 
            } 
        }, 
        Basket{ 
        ... 
        ... 
        } 

        } 

У меня есть основная таблица, которая содержит подробную информацию о матче, Id_match, спорт, страна, лига, команда A, Team B и т.д. . Кроме того, у меня есть таблица для каждого типа ставок и содержит id_match и другие конкретные данные. Я работаю с 50 + столами, мой веб-сайт находится в php, а база данных - mysql. Затем я консультироваться с leftjoin, за каждый bettype (все leftjoin in 1 consult), и связано с id_event, результатом моего справки return json, а в моем html5 я использую angularjs для показа. Некоторые совпадения имеют данные для всех таблиц, но другие показывают null в некоторых типах bettypes, это нормально, потому что каждый тип bet определен. Я использую Angularjs, тогда мне нужно позвонить в базу данных только один раз, потому что я могу фильтровать, скрывать, группировать и т. Д .; на стороне клиента

мой страх - это оптимизация, я хочу знать, подходит ли такая консультация, потому что, представьте себе, что это делается для 300 игр и 60 таблиц с типами ставок.

Я думаю, что создать меню для фильтрации Sport-> Country-> league и сделать только консультацию для этой конкретной группы, для этого я использовал только свою основную таблицу (всего 1 таблицу), но мой вопрос есть, если многие люди называют несколько раз в базе данных, будет происходить тот же износ? или это решение?

+0

consult = query? – Bert

+0

Возможный дубликат [Вопросы для оптимизации Mysql] (http://stackoverflow.com/questions/31088783/questions-to-optimize-mysql) –

ответ

0

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

Все данные, которые требуют соединения, но редко обновляются, могут быть кэшированы в одной таблице. Обновлено, например. ежедневно. Запросы будут менее сложными и быстрыми.