gpt4 book ai didi

MySQL:为什么没有使用索引的所有键?

转载 作者:行者123 更新时间:2023-11-29 02:25:50 25 4
gpt4 key购买 nike

我有一个包含 50 列的表格。我用以下 6 列定义了一个索引(不是唯一的):

rdsr_id (int), 
StartOfXrayIrradiation (datetime),
PatientsBirthDate (date),
DeviceObserverUID (varchar(100)),
IdentifiedProtocolShort (varchar(50)),
RedundantEntryFromDoseSummary (tinyint(1))

该表称为报告,大约有 20,000 行并且还在增加。运行以下查询时,结果显示仅使用了索引的 4 个键。

EXPLAIN EXTENDED SELECT r.PatientID, r.StartOfXrayIrradiation, MeanCTDIvol_in_mGy 
FROM report r
INNER JOIN ct_irradiation_events e ON r.rdsr_id = e.rdsr_id
INNER JOIN patient_age_categories a ON ( DATEDIFF( r.StartOfXrayIrradiation, r.PatientsBirthDate ) <= a.max_age_days
AND DATEDIFF( r.StartOfXrayIrradiation, r.PatientsBirthDate ) >= a.min_age_days
AND a.description = 'Erwachsene' )
WHERE MeanCTDIvol_in_mGy IS NOT NULL
AND r.DeviceObserverUID = '2.25'
AND r.IdentifiedProtocolShort = 'XXXXX'
AND r.RedundantEntryFromDoseSummary =0
AND e.CTAcquisitionType != 'Constant Angle Acquisition'
AND DATEDIFF( r.StartOfXrayIrradiation, '2013-01-06' ) >=0
AND DATEDIFF( r.StartOfXrayIrradiation, '2014-03-06' ) <=0;

表格报告的结果:

> id: 1  
> select_type: SIMPLE
> table: r
> type: ref
> possible_keys: TimelineHistogramQueries
> key: TimelineHistogramQueries
> key_len: 4
> ref: rdsr.e.rdsr_id
> rows: 1
> filtered: 100.00
> Extra: Using where

所以我想列 IdentifiedProtocolShort 和 RedundantEntryFromDoseSummary 没有被使用?查询的结果是 1400 行。从 WHERE 子句中删除两列时,会找到 9500 行。顺便说一句:如果这很重要的话,我确实在创建索引后运行了“ANALYZE TABLE report”......

为什么没有使用索引的所有键?我应该更改索引吗?

最佳答案

假设您的 TimelineHistogramQueries key 是您按此顺序列出的六列的复合键,然后是 key_len 4(字节)的值确实表明只有 rdsr_id正在使用索引中的列:这由 ref 支持rdsr.e.rdsr_id 的值.

你问为什么IdentifiedProtocolShortRedundantEntryFromDoseSummary (索引中的第 5 列和第 6 列)未被使用。如 Multiple-Column Indexes 下所述:

MySQL cannot use the index to perform lookups if the columns do not form a leftmost prefix of the index.

如果您不要求此索引的列在任何其他查询中处于当前顺序,您只需重新排序列即可;否则,您可能需要定义第二个索引。

关于MySQL:为什么没有使用索引的所有键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22247686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com