按类别组织有效

时间:2015-09-03 15:17:21

标签: mysql database database-design

我想保存 500k 实体的列表,所有这些实体在这些类别中都有类别排名。我想到并看到一些方法来保存这个,但我真的想知道更高效,技巧,想法,技巧......

我想从更好的方式开始这个:)

主要用途是显示按类别排序的排名,这些排名可以每日更改

方式1

Entities
-----------
id | name | categoryId | ranking |

Categories
------------
id | name

方式2

Entities
------------
id | name

Categories
------------
id | name

Rankings
------------
id | entityId | categoryId

在数据库创建的最后阶段,它将是一个正确的优化

1 个答案:

答案 0 :(得分:1)

仅用于说明目的。 Mysql创建事件手册页here

显示变量,其中variable_name =' event_scheduler';

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | OFF   |
+-----------------+-------+

ooops,事件调度程序未打开。

好吧,我可以整天等待,事件甚至没有打开

SET GLOBAL event_scheduler = ON; - 打开她

显示变量,其中variable_name =' event_scheduler';

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+

create table trips
(   id int auto_increment primary key,
    status int not null,
    created_at date not null
);
insert trips(status,created_at) values (0,'2014-09-09');

创建活动:

DELIMITER $$
CREATE EVENT `set_trips_finished`
  ON SCHEDULE EVERY 1 MINUTE STARTS '2015-08-23 00:00:00'
  ON COMPLETION PRESERVE
DO BEGIN

  UPDATE trips
  SET status = status+1
  WHERE date(created_at) < curdate();

END;$$
DELIMITER ;

- 按架构名称列出所有事件 显示来自so_gibberish的事件;

显示事件\ G; - &lt; ---------我喜欢mysql的这个&gt;提示 展示活动; - &lt; ---------来自workbench / sqlyog

*************************** 1. row ***************************
                  Db: so_gibberish
                Name: set_trips_finished
             Definer: GuySmiley@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MINUTE
              Starts: 2015-08-23 00:00:00
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci

从旅行中选择*;

+----+--------+------------+
| id | status | created_at |
+----+--------+------------+
|  1 |      0 | 2014-09-09 |
+----+--------+------------+

等几分钟(注意我的活动每分钟运行一次)

从旅行中选择*;

+----+--------+------------+
| id | status | created_at |
+----+--------+------------+
|  1 |      3 | 2014-09-09 |
+----+--------+------------+

事件已经运行了3次。好的,看起来不错。

SET GLOBAL event_scheduler = OFF;

-- turn her off if so desired