我正在尝试加快Rails查询的速度,该查询耗费了我重新加载页面的大量时间。
我在rails视图中有以下内容:
<% if current_account.subscribed? and current_account.subscription.plan.id == 2 %>
<div class="flex items-center bg-blue-100 rounded-lg px-2 mb-2 shadow-lg data-controller="tooltip" data-tippy-content="Clases reservadas este mes" data-tippy-delay="0" data-tippy-arrow="true" data-tippy-size="regular" data-tippy-animation="fade">
<div class="mr-2 flex-shrink-0 text-3xl md:text-2xl">
?
</div>
<div>
<p class="text-3xl md:text-2xl font-bold">
<%= @lessons_basic_count %>
</p>
</div>
</div>这是我在控制器上运行的查询:
@lessons_basic_count = @mylessons_lessons.where(datetime: Time.at((current_account.subscription.latest_payment.created if current_account.subscription.latest_payment).to_i)..(Date.current + 30.days)).size这是一个查找表mylessons的查询,该表包含用户在其订阅的实际时间段内预订的课程。
谢谢。
发布于 2021-06-28 22:32:24
EXPLAIN输出中QUERY PLAN之后的信息才是最重要的。你能在你的问题中包括这一输出吗?
看起来您可能需要在您的mylessons表上为user_id和datetime设置一个双键。您可以将其添加到迁移中,如下所示:
add_index :mylessons, [:user_id, :datetime]您还需要一个关于mylessons.lesson_id的索引。可以添加类似以下内容的内容:
add_index :mylessons, :lesson_idhttps://stackoverflow.com/questions/68164367
复制相似问题