【发布时间】:2009-02-13 17:21:06
【问题描述】:
我有一个 MySQL 索引问题要问你们。
我在 MySQL 中有一个非常大的表(约 1 亿条记录),其中包含有关文件的信息。我对其进行的大多数查询都涉及对文件路径列的子字符串操作。
这是 ddl 表:
CREATE TABLE `filesystem_data`.`$tablename` (
`file_id` INT( 14 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`file_name` VARCHAR( 256 ) NOT NULL ,
`file_share_name` VARCHAR ( 100 ) NOT NULL,
`file_path` VARCHAR( 900 ) NOT NULL ,
`file_size` BIGINT( 14 ) NOT NULL ,
`file_tier` TINYINT(1) UNSIGNED NULL,
`file_last_access` DATETIME NOT NULL ,
`file_last_change` DATETIME NOT NULL ,
`file_creation` DATETIME NOT NULL ,
`file_extension` VARCHAR( 50 ) NULL ,
INDEX ( `file_path`, `file_share_name` )
) ENGINE = MYISAM
};
例如,我有一行文件路径如下:
'\\Server100\share2\Home\Zenshai\My Documents\'
我将提取用户名(在本例中为 Zenshai),例如
SELECT substring_index(substring_index(fp.file_path,'\\',6),'\\',-1) as Username
FROM (SELECT '\\\\Server100\\share2\\Home\\Zenshai\\My Documents\\' as file_path) fp
它有点难看,但这不是我现在真正关心的问题。
我想要一些建议是,什么样的索引(如果有的话)可以帮助加快对这个表的这些类型的查询。也欢迎任何其他建议。
谢谢。
PS。尽管表变得非常大,但仍有足够的空间用于索引。
【问题讨论】:
标签: sql mysql database indexing