|
Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
Тема
|
въпрос за REPLACE
|
|
Автор | pip (Нерегистриран) |
Публикувано | 29.10.03 10:20 |
|
здравейте,
имам една таблица с 4 колони в която ще има много и чест Insert на данни. с един SQL ще се слагат по няколко реда, т.е. Insert into table values (...), ..., (...);
оказа се обаче че в стойностите които ще се слагат е възможно да има повтарящи се стойности за PRI key-а. така че данните ще се слагат с REPLACE into ...
За да изчистя тези повтарящи се стойности преди да генерирам SQL-а, трябва да се въртят доста цикли в програмата, PRI key-а е и от 4-те колони, като едната е текущото време.
Въпросът ми е, доколко по-бавен е REPLACE от INSERT за подобни чести и масови въвеждания на данни (редовете в таблицата може да станат около 1-2 милиона по някое време), и дали ще е по-ефикасно да ги чистя от scriptа, и след това да си използвам INSERT.
благодаря
:))
| |
Тема
|
Re: въпрос за REPLACE
[re: pip]
|
|
Автор | зъл oйлюфф (Нерегистриран) |
Публикувано | 29.10.03 10:37 |
|
много кофти си построил базата
тоя primary key дет си го направил хич не е primary
пък и да включваш вътре текущото време е направо извън пътя
вземи малко ги пооправи тия неща и проблема ти ще се реши
| |
Тема
|
Re: въпрос за REPLACE
[re: зъл oйлюфф]
|
|
Автор | pip (Нерегистриран) |
Публикувано | 29.10.03 10:58 |
|
ее, ама много сте бързи с критиката :))
ще обясня малко по-подробно за какво е таблицата, ако и тогава кажете че е зле конструирана, ще преразгледам въпроса.
UserID smallint unsigned PRI
AreaID tinyint unsigned PRI
ActionID tinyint unsigned PRI
Time datetime PRI
AreaID е ID-то на областа на дейстивие, ActionID е ID-то на самото действие.
с тази таблица ще знам Кой, Къде, Кое, Кога е извършил.
т.е. тя е статистическа таблица, в нея ще има Много Insert на данни, но почти никакъв Select.
Ако ми кажете че този PRI кей не е какъвто трябва да е, т.е. ако мога да определя тези неща с тази таблица, като махна някоя колона да не е от PRI-тата, отивам да паля огън за пепел :)
поздрави
| |
Тема
|
Re: Много си ти е добра таблицата
[re: pip]
|
|
Автор |
salle (един такъв) |
Публикувано | 29.10.03 11:22 |
|
Остави го охлюва - сигурно не си е изпил кафето още.
REPLACE всъщност предствлява DELETE + INSERT
Мисля, че това отговаря напълно на въпроса ти.
За твоята конкретна таблица обаче има обаче още по-елегантен вариант.
INSERT IGNORE INTO ...;
IGNORE означава ако има грешка (дублиран ключ) да продължи нататък без пазарлъци.
Както сигурно вече си забелязял когато вмъкваш по много редове наведнъж и някой от тях се повтаря заявката спира дотам - и нямаш начин да разбереш кой точно редове са минали и кои не. IGNORE моменталон ти решава проблема.
За твоя случай няма никакъв проблем понеже ПК обхваща целия ред.
Което между другото на теория е перфектна таблица та и аз не схващам какво не му харесма на охлюва
Редактирано от salle на 29.10.03 11:23.
| |
Тема
|
Re: Много си ти е добра таблицата
[re: salle]
|
|
Автор | pip (Нерегистриран) |
Публикувано | 29.10.03 11:32 |
|
Здравей,
Както винаги си прав.
Принципно знам за Insert IGNORE, че има, само че не знам защо не се сетих за него сам.
| |
Тема
|
Re: питане
[re: pip]
|
|
Автор |
phpGuru (минаващ) |
Публикувано | 29.10.03 11:55 |
|
според мен Time е времето на действието, нали?
ако е така на мен ми се вижда не възможно да получиш дублиране по primary key
защото никога няма да се случи на същото мясот същото нещо извършено от същият човек, освен ако нямаш различни источници на информация за едно и също събитие и да се припокрива информацията
| |
Тема
|
Re: Много си (НЕ)ти е добра таблицата
[re: salle]
|
|
Автор | зъл oйлюфф (Нерегистриран) |
Публикувано | 29.10.03 12:12 |
|
и кво му е добрето на тоя key ако не е тайна???
не е въпроса дали на теория е перфектно а има ли изобщо смисъл да го правиш така....
| |
Тема
|
Re: питане
[re: phpGuru]
|
|
Автор | pip (Нерегистриран) |
Публикувано | 29.10.03 12:12 |
|
Съвсем правилно е предположението ти.
в процеса на разработката се получи така, че с едно и също извикване на script, може да се изпълние Едно и Също действие в рамките на това извикване. Например имаш 2 части на страницата където данните за тях се различават, но се взимат от едно и също действие с различни параметри към него.
И тогава се получава това дублиране, тъй като в рамките на извикването на scriptа действието се извиква 2 пъти, с различни параметри към него, Ho тогава времето на извикване на действиеTo съвпада и при двете извиквания. И за това така се получава.
| |
Тема
|
Re: въпрос за REPLACE
[re: pip]
|
|
Автор | Waflata (Нерегистриран) |
Публикувано | 29.10.03 13:34 |
|
I az imam podobna tablica za logwane na eventite, ama ne sam turl PRI KEY, shtoto ne wijdam za kakwo mi e...i q zachistwam, na 6 meseca delwam logs sas data tam < ... etc.
| |
Тема
|
Re: питане
[re: pip]
|
|
Автор | Waflata (Нерегистриран) |
Публикувано | 29.10.03 13:37 |
|
shto ne polzwash MICROTIME ili TIMESTAMP nesto ili prosto dobawish oshte nesto deto unikalizira iztochnika, moje da e MD5(RemoteIP . date(). microtime)...prosto predlagam :>
| |
|
Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
|
|
|