我有一个mysql表,其中有超过3000万条记录最初与myisam一起存储.这是表格的描述:

我将针对此表运行以下查询,通常需要大约30秒才能完成.我每次都会更改@eid以避免数据库或磁盘缓存.
select count(fact_data.id)
from fact_data
where fact_data.entity_id=@eid
and fact_data.metric_id=1
Run Code Online (Sandbox Code Playgroud)
然后我将此表转换为innoDB而不进行任何其他更改,之后相同的查询现在每次运行查询时返回一秒钟.即使我随机设置@eid以避免缓存,查询也会在一秒钟内返回.
我一直在研究这两种存储类型之间的差异,试图解释性能的显着改善,但却未能提出任何建议.事实上,我读到的大部分内容都表明Myisam应该更快.
我正在运行的查询是针对本地数据库的,在测试时没有其他进程访问数据库.
有什么功能类似于BIT_COUNTMSSQL中的MYSQL 功能吗?我想在MSSQL中创建一个非常简单的汉明距离函数,我可以在我的选择中使用它.
这是我对MYSQL的看法:
CREATE FUNCTION `HAMMINGDISTANCE`(`hasha` BIGINT, `hashb` BIGINT)
RETURNS int(11)
DETERMINISTIC
RETURN
BIT_COUNT(hasha^hashb)
Run Code Online (Sandbox Code Playgroud) 我想显示列名以数字开头的表中的数据,这里是循环中视图文件中的代码
<?php echo $cus->3rdfloorslab; ?>
Run Code Online (Sandbox Code Playgroud)
它向我显示以下错误:
解析错误:语法错误,意外T_LNUMBER,期望在第318行的C:\ wamp\www\westlinecrm\application\views\client\addpaymentstatementform.php中的T_STRING或T_VARIABLE或'{'或'$'
是否有任何解决方案来显示数据而不将列名从数字更改为字符串.