2015-06-16 6 views
1

Мой код python создает таблицу с неделями в виде столбцов и строк по мере доступа к URL-адресам. Для получения данных для каждой ячейки выполняется запрос в базе данных mysql. Код работает очень медленно. Я добавил индексы в таблицы mysql, и это не помогло. Я думал, что это потому, что я строю код таблицы html с конкатенацией, но даже с использованием списка и соединения не фиксировала скорость. Код работает медленно как в django (с использованием дополнительного подключения к базе данных), так и в автономном python. Любая помощь в ускорении этого будет оценена по достоинству.Ускорение работы python с несколькими запросами mysql

пример запроса, что вызывается из цикла:

def get_postcounts(week): 
    pageviews = 0 
    cursor = connections['olap'].cursor() 
    sql = "SELECT SUM(F.pageview) AS pageviews FROM fact_coursevisits F INNER JOIN dim_dates D ON F.Date_Id = D.Id WHERE D.date_week=%d;" % (week) 
    row_count = cursor.execute(sql); 
    result = cursor.fetchall() 
    for row in result: 
     if row[0] is not None: 
      pageviews = int(row[0]) 
    cursor.close() 
    return pageviews 
+0

Ваш код sql кажется неправильным - ГДЕ И? – Andrew

+0

Вы пытались оптимизировать SQL, например? поместив индекс на f.date_id и d.id ?. Также я согласен с ответом user1857805 - возможно, быстрее читать его в одном большом запросе с группой по неделям, а отдельный в Python – Andrew

+0

Насколько велики те таблицы, которые вы запрашиваете, и какие типы данных вы используете для хранения данных? Кроме того, какое оборудование вы используете для запуска сервера базы данных? – WayBehind

ответ

0

это может быть из-за количества запросов, которые вы выполняете (если вы вынуждены вызывать этот метод много).

Я бы предложил запрашивать количество просмотров и неделю за определенный период в одном запросе и считать результаты.

Смежные вопросы