最好的方法。 [英] Best way to do so.

查看:83
本文介绍了最好的方法。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

很抱歉,如果我在这里发帖,但我没有访问任何有价值的mysql ng

这个问题,因为99%或php程序员处理mysql,我很有信心

我会在这里得到答案。


查看下表:

CREATE TABLE searchlog(

IDSearchLog MEDIUMINT UNSIGNED NOT NULL的auto_increment,

F1 MEDIUMINT UNSIGNED默认NULL,

F2 VARCHAR(40)默认NULL,

F3A SMALLINT UNSIGNED默认为NULL,

F3B SMALLINT UNSIGNED默认为NULL,

F4A FLOAT(11,2)UNSIGNED默认为NULL,

F4B FLOAT( 11,2)UNSIGNED默认NULL,

F5A MEDIUMINT UNSIGNED默认NULL,

F5B MEDIUMINT UNSIGNED默认NULL,

F6炭(8)默认NULL,

F7 char(8)默认为NULL,

F8 char(8)默认为NULL,

F9a TINYINT UNSIGNED默认为NULL,

F9b TINYINT UNSIGNED默认为NULL,

F10a FLOAT(6,2)UNSIGNED默认为NULL,

F10B FLOAT(6,2)UNSIGNED默认为NULL,

器F11a FLOAT(6,2)UNSIGNED默认为NULL,

F11b上FLOAT(6,2)UNSIGNED默认为NULL,

F12 datetime NOT NULL,

PRIMARY KEY(IDSearchLog),

唯一的密钥IDSearchLog(IDSearchLog),

INDEX AI_IDSearchLog(IDSearchLog)

);


现在这将用于管理搜索日志。任何时候在某些字段上进行搜索,然后我必须记录它们。

很长一段时间,我认为它们可能是5-600左右不同的搜索

类型。许多搜索都非常相似。

现在,出于表演原因,我有3种可能:

1)我可以检查是否完成了相同的搜索然后只记录了datetime和

IDSearchLog。如果相同的搜索不存在,那么我创建它。

2)我可以在每次搜索时创建一个新条目:我不必检查是否

搜索存在,但我会有很多类似的记录。这会增加

的数据量,但是不是更快吗?我在每次搜索时都避免检查。

3)我可以创建许多表格。如果你仔细看看这个字段的名字

(为了更好的理解而明确改变),任何带有a或b的数字

就意味着你可以定义最小值和最大值所以对于字段F3a和F3b是一个

最小值和最大值。因此,限制组合在

搜索之间可能非常常见。所以在我的搜索日志表中,我可能只有指向

不同组合的指针。这在查询时间里似乎非常沉重,但它让我获得了一些空间。也许我错过了一个快速的方法来创建一个新的组合

每次,并返回现有的ID,如果可用而不是创建它。


之后思考我的想法,第一选择会有我的偏好。但是

我很害怕搜索具有相同字段的现有记录会使得b $ b减慢很多,并且它不值得增加的空间来反对选择2.

也许有一种简单的方法可以在查询中添加一些字段,如果字段

组合已经存在,则返回ID。

一些搜索示例:

阿迪达斯,鞋子,150美元,250美元,蓝色

耐克,袜子,50美元

阿迪达斯,袜子,60美元,价格为b $ b耐克,袜子,60美元

阿迪达斯鞋子,250美元

美洲豹鞋子,红色/>
Puma鞋子,黄色

.....

我必须记录这些字段才能尽快,还要保存

空间。


请帮忙。


Bob

Sorry if I post here, but I don''t have access to any valuable mysql ng for
this question, ans since 99% or php programmers deal with mysql, I''m sure
I''ll get an answer here.

Look at the folloming table:
CREATE TABLE searchlog (
IDSearchLog MEDIUMINT UNSIGNED NOT NULL auto_increment,
F1 MEDIUMINT UNSIGNED default NULL,
F2 VARCHAR(40) default NULL,
F3a SMALLINT UNSIGNED default NULL,
F3b SMALLINT UNSIGNED default NULL,
F4a FLOAT(11,2) UNSIGNED default NULL,
F4b FLOAT(11,2) UNSIGNED default NULL,
F5a MEDIUMINT UNSIGNED default NULL,
F5b MEDIUMINT UNSIGNED default NULL,
F6 char(8) default NULL,
F7 char(8) default NULL,
F8 char(8) default NULL,
F9a TINYINT UNSIGNED default NULL,
F9b TINYINT UNSIGNED default NULL,
F10a FLOAT(6,2) UNSIGNED default NULL,
F10b FLOAT(6,2) UNSIGNED default NULL,
F11a FLOAT(6,2) UNSIGNED default NULL,
F11b FLOAT(6,2) UNSIGNED default NULL,
F12 datetime NOT NULL,
PRIMARY KEY (IDSearchLog),
UNIQUE KEY IDSearchLog (IDSearchLog),
INDEX AI_IDSearchLog (IDSearchLog)
);

Now this will be used for managing searchlog. Any time a search is done on
some fields, then I must log them.
For the long time, I think that they may be about 5-600 different search
type. Many search would be quite similar.
Now, for performances reasons I''ve 3 possibilities:
1) I may check if the same search is done then log only the datetime and the
IDSearchLog. If the same search doesn''t exist, then I create it.
2) I may create a new entry on every search: I won''t have to check if the
search exists, but I will have a lot of similar records. This will rise the
amount of data, but isn''t quicker ? I avoid a check at every search.
3) I may create many tables. If you have a close look at the field''s name
(explicitely changed for better understanding), any number with a or b next
to it means that you may define min and max. So for fields F3a and F3b is a
min and max value. So the limits combination may be quite common between
searches. So in my searchlog table, I may only have pointers to the
differents combinations. This seems very heavy in query time, but it let me
gain some space. Maybe I''m missing a quick way to create a new combination
every time, and return the existing ID if available instead of creating it.

After thinking at what I''ve, the first choice would have my preference. But
I''m scared that the search for existing record with the same fields would
slow down a lot, and it doesn''t worth the gained space against choice 2.
Maybe there is a simple way to add some fields in a query, and if the fields
combination already exists, return the ID.
Some search example:
Adidas, shoes, from 150$, to 250$, blue
Nike, socks, to 50$
Adidas, socks, to 60$
Nike, socks, to 60$
Adidas shoes, to 250$
Puma shoes, red
Puma shoes, yellow
.....
I''ve to log such fields in order to be as fast as possible, but also save
space.

Please help.

Bob

推荐答案

,至250


,蓝色

Nike,socks,to 50
, blue
Nike, socks, to 50




阿迪达斯,袜子,60岁

Adidas, socks, to 60


这篇关于最好的方法。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆