快页检索MySQL、索引使用情况?
-
03-07-2019 - |
题
我想速MySQL查询,基本上检索网页的数据以下模式下
select
my_field_A,
my_field_B
where
time_id >= UNIX_TIMESTAMP('1901-01-01 00:00:00') AND
time_id < UNIX_TIMESTAMP('2009-01-16 00:00:00')
该领域 time_id
是MySQL索引,但是,查询的行为,如果整个数据库是在阅读每个查询(检索一对夫妇的线已经很慢)。我不是专家在MySQL.有人能猜到我在做什么错的?
解决方案
确保有一个索引(B树)在time_id,这应该是有效范围内查询。还要确保time_id是在适当的时间格式。
如果你真的想要了解什么mysql是这样做可以增加关键词'解释'前方的查询,并运行它在你的mysql client.这将显示一些信息是什么mysql是做什么样的扫描执行。
其他提示
由于可能有很多 time_id
属于这些标准, MySQL
可能会认为全表扫描更好。
尝试强制索引:
SELECT
my_field_A,
my_field_B
FROM mytable FORCE INDEX (index_name_on_time_id)
WHERE
time_id >= UNIX_TIMESTAMP('1901-01-01 00:00:00') AND
time_id < UNIX_TIMESTAMP('2009-01-16 00:00:00')
你需要更低的范围吗?有没有比1901年更早的参赛作品? time_id列是如何生成的?如果每个新条目都添加到DB中时time_id总是更大,您可能需要考虑查找最接近2009-01-16条目的ID,然后按ID选择
select my_field_A, my_field_B
FROM
mytable
WHERE
id <= ?
如果情况并非如此,请尝试检查MySQL 5.1中提供的分区并按年分解表格,这样可以大大提高速度。
不隶属于 StackOverflow