需要为超过 200 万条记录的 table 创建高效索引
need to create an efficient index for a table with more than 2 million records
我需要优化的查询如下:
SELECT field0.entity_type AS entity_type,
field0.entity_id AS entity_id, field0.revision_id AS revision_id,
field0.bundle AS bundle
FROM field field0
INNER JOIN node node ON node.nid = field0.entity_id
WHERE (field0.field_value = '23ad')
AND (field0.deleted = '0')
AND (node.status = '1')
AND (field0.entity_type = 'node')
AND (field0.bundle = 'title')
查询的以下部分始终相同:
AND (field0.deleted = '0')
AND (node.status = '1')
AND (field0.entity_type = 'node')
AND (field0.bundle = 'title')
唯一改变的行是:
WHERE (field0.field_value = '?')
遵循上述查询的解释结果:
[解释 select 结果][1]
SHOW INDEXES 来自字段查询的结果:
[table 命名字段中现有索引的结果][2]
不仅我有这么大的 table,而且由于这个数据库属于 drupal 7 站点,还有更多的 table,所以性能真的很慢。
你建议我做哪个索引?我应该如何处理现有索引?
SHOW VARIABLES LIKE "%version%";
returns 5.7.29
[来自节点的 SHOW INDEXES 结果;][3]
[DESCRIBE 节点的结果;][4]
[DESCRIBE 字段的结果;][5]
我测试了以下答案,它与我的第一次试验不同:
(捆绑,entity_type,已删除,field_tl_uuid_value,entity_id,revision_id)。两者都给我结果,我应该选择哪个,为什么?
[1]: https://i.stack.imgur.com/lfcn6.png
[2]: https://i.stack.imgur.com/qXsPt.png
[3]: https://i.stack.imgur.com/5w9lD.png
[4]: https://i.stack.imgur.com/fTRDY.png
[5]: https://i.stack.imgur.com/KvRVX.png
您的查询将受益于以下索引:
create index on field (bundle, entity_type, deleted, field_value);
我需要优化的查询如下:
SELECT field0.entity_type AS entity_type,
field0.entity_id AS entity_id, field0.revision_id AS revision_id,
field0.bundle AS bundle
FROM field field0
INNER JOIN node node ON node.nid = field0.entity_id
WHERE (field0.field_value = '23ad')
AND (field0.deleted = '0')
AND (node.status = '1')
AND (field0.entity_type = 'node')
AND (field0.bundle = 'title')
查询的以下部分始终相同:
AND (field0.deleted = '0')
AND (node.status = '1')
AND (field0.entity_type = 'node')
AND (field0.bundle = 'title')
唯一改变的行是:
WHERE (field0.field_value = '?')
遵循上述查询的解释结果:
[解释 select 结果][1]
SHOW INDEXES 来自字段查询的结果:
[table 命名字段中现有索引的结果][2]
不仅我有这么大的 table,而且由于这个数据库属于 drupal 7 站点,还有更多的 table,所以性能真的很慢。 你建议我做哪个索引?我应该如何处理现有索引?
SHOW VARIABLES LIKE "%version%";
returns 5.7.29
[来自节点的 SHOW INDEXES 结果;][3]
[DESCRIBE 节点的结果;][4]
[DESCRIBE 字段的结果;][5]
我测试了以下答案,它与我的第一次试验不同: (捆绑,entity_type,已删除,field_tl_uuid_value,entity_id,revision_id)。两者都给我结果,我应该选择哪个,为什么? [1]: https://i.stack.imgur.com/lfcn6.png [2]: https://i.stack.imgur.com/qXsPt.png [3]: https://i.stack.imgur.com/5w9lD.png [4]: https://i.stack.imgur.com/fTRDY.png [5]: https://i.stack.imgur.com/KvRVX.png
您的查询将受益于以下索引:
create index on field (bundle, entity_type, deleted, field_value);