设计MySQL表以提高SELECT速度

时间:2018-11-06 21:51:29

标签: mysql sql database-design query-optimization

我正在为网站设计简单的支持功能。
用户可以打开有问题的票证,并从支持资料中重播,其他站点用户也可以重播他的票证。

为此,数据库将有2个表,为简化起见,我仅描述相关的列。

  1. ticket_header ,其中包含列:
    ticket_id (BIGINT,主要), email_ticket_owner (VARCHAR),...

  2. tickets_comments ,其中包含列:
    号码(BIGINT),票证ID (BIGINT),电子邮件票证评论员(VARCHAR),...

对于每张票证,在票证表头中只有一个条目,并且在票证表中可以是无限个条目。 每个表应包含大量条目。

我的问题是:
在性能方面,推荐的方法是在表tickets_comments中定义索引,这样我就可以从数十亿个条目中尽快选择具有相同ticket_id的所有条目。 我的查询将是:

SELECT *  
FROM   tickets_comments  
WHERE  ticket_id = 1234;

3 个答案:

答案 0 :(得分:1)

为ticket_id创建一个索引

  

$(window).scroll(function() { var scroll = $(window).scrollTop(); if (scroll > 550) { $('.nav_bar').addClass('navbar-fixed'); } else { $('.nav_bar').removeClass('navbar-fixed'); } }); 上创建索引idx_tickets_comments_ticket_id(ticket_id)注释

答案 1 :(得分:0)

对于此查询:

SELECT *  
FROM tickets_comments  
WHERE ticket_id = 1234;

您要在tickets_comments(ticket_id)上建立索引。

就内存而言,这可能会很棘手-如果您的表和索引都不适合内存。您可能希望选择数量有限的列-并将其包括在索引中。

答案 2 :(得分:0)

没有什么可改进的...您在ticketid上建立索引了吗?