Jos*_*osh 4 mysql sql optimization
我有一个这种结构的表,它目前包含约160万条记录.
CREATE TABLE `chatindex` (
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`roomname` varchar(90) COLLATE utf8_bin NOT NULL,
`username` varchar(60) COLLATE utf8_bin NOT NULL,
`filecount` int(10) unsigned NOT NULL,
`connection` int(2) unsigned NOT NULL,
`primaryip` int(10) unsigned NOT NULL,
`primaryport` int(2) unsigned NOT NULL,
`rank` int(1) NOT NULL,
`hashcode` varchar(12) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`timestamp`,`roomname`,`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Run Code Online (Sandbox Code Playgroud)
房间名称和用户名列都可以包含相同的确切数据,但每个项目的唯一性和重要位来自于将时间戳与这两个项目组合在一起.
开始需要一段时间(10-20秒)的查询是这样的:
SELECT timestamp,roomname,username,primaryip,primaryport
FROM `chatindex`
WHERE username LIKE '%partialusername%'
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能优化这个?我不能这样做,partialusername%因为对于某些查询,我只会有一小部分实际用户名的中心,而不是实际值开头的前几个字符.
编辑:
另外,对于这个特殊目的,狮身人面像会更好吗?
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |