int (5) vs. smallint (5): čísla v závorkách za číslicovým typem
<p>v definicích tabulky mysql je rozdíl mezi <code>int(5)</code> a <code>smallint(5)</code>? nebo oba představují stejnou velikost?</p>
<p> <a href="https://dev.mysql.com/doc/refman/8.0/en/integer-types.html"><code>int</code> a <code>smallint</code> mají různé velikosti a následně rozsahy.</a> <code>(5)</code> je <code>smallint(5)</code> nebo <code>int(5)</code> se nazývá <a href="https://dev.mysql.com/doc/refman/8.0/en/numeric-type-attributes.html">"atribut číselného typu"</a> a představuje "šířku zobrazení" pole,</p><blockquote> <p>mysql podporuje rozšíření pro volitelné určení šířky zobrazení celočíselných datových typů v závorkách následujících za základním klíčovým slovem pro daný typ. například <code>int(4)</code> určuje <code>int</code> se šířkou zobrazení čtyř číslic. tuto volitelnou šířku zobrazení mohou aplikace použít k zobrazení celočíselných hodnot, jejichž šířka je menší než šířka specifikovaná pro sloupec, přičemž je doleva vyplní mezerami. (to znamená, že tato šířka je přítomna v metadatech vrácených se sadami výsledků. zda se používá nebo ne, závisí na aplikaci.)</p> <p>při použití ve spojení s volitelným (nestandardním) atributem <code>zerofill</code> je výchozí výplň mezer nahrazena nulami. například pro sloupec deklarovaný jako <code>int(4) zerofill</code> je hodnota <code>5</code> načtena jako <code>0005</code>.</p> </blockquote><p>toto je mysql "rozšíření" a zerofill je "rozšíření" na rozšíření.</p><p>pro rozumný způsob ovládání zobrazení číselného typu nepoužívejte atributy numeric type a místo toho použijte</p><ul> <li> <a href="https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function\_format"><code>format</code></a> </li> <li> <a href="https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function\_lpad"><code>lpad</code></a> </li> <li> <a href="https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function\_lpad"><code>rpad</code></a> </li> </ul>
[`IGNORE_SPACE`](http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_ignore_space)Režim umožňuje mezery mezi názvy funkcí a následující závorkách. Pokud je to povoleno, všechny názvy funkcí se stal vyhrazená slova, protože to stane se nemožné pro MySQL, zda voláte funkce nebo deklarovat (s použitím) identifikátor.


Proto, pokud je to povoleno, vaše `CREATE TABLE`selže a následující:



```
SELECT MD5 (some_column) FROM some_table

```

bude pracovat. Pokud `IGNORE_SPACE`je vypnuta, opak stane ( `CREATE TABLE`bude fungovat a především `SELECT`nebude, protože tam je mezera mezi názvu funkce a závorce). Neexistuje žádný dobrý důvod vzdát zjevné indexy (FKS, atd), při vytváření tabulky. To se nikdy výrazně ovlivnit výkon na to, aby nepotřebné indexy malých tabulek, a to je dobré, aby se první řez, když je vaše mysl v souvislosti s návrhem schématu. Také některé indexy slouží k zabránění duplicity, které mohou být užitečné bez ohledu na velikost tabulky.


Myslím, že správná odpověď na vaši otázku je, že počet záznamů v tabulce by měl mít nic společného s tím, když se vytvořit indexy. Ja bych to tak nějak odvodil od velikosti HDD, nebo od taktu procesoru a počtu jader....To je vidět že jsou prázdniny a žáci zvláštních škol se dostali k interenet a nechápou že to "ostatní" v této poradně neznamená prostě ostatní, ale "ostatní vztahující se k výpočrtní technice". No svou vinu natom má i redakce, když po několikaletém upozorňování není schopná to tam dopsat!!!! protože používáte WinForms aplikaci, pokud je to v NET 2.0 je to vlastně systém uživatelských nastavení (tzv Properties), který je navržen pro tento účel. [Tento článek na webu MSDN](http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx) má docela dobrý úvod do této


Pokud jste stále obavy o výkonu pak se podívat na [SQL Compact Edition](http://www.microsoft.com/sql/editions/compact/default.mspx) , který je podobný SQLite, ale je dar společnosti Microsoft, který jsem našel hraje velmi pěkně s WinForms a je tu i možnost [, aby to fungovalo s LINQ](http://geekswithblogs.net/steveclements/archive/2007/11/13/LINQ-to-SQL.compact.aspx) Funkce vraci #N/A protoze nenalezla odpovidajici hodnotu. Dost tezko muze najit ve sloupci A1:A5 hodnotu 0,142857143 co je min(B1:B5), musis hledat 1/min(B1:B5) pripadne ZAOKROUHLIT(1/MIN(B1:B5);0)  
napr. vzorec: =lookup((1/min(B1:B5);B1:B5;A1:A5) Pokud v řádcích bude :  
1. A  
2. B  
3. C  
4. D  
Tak tady bude třeba :  
=SUMA(KDYŽ(NEBO(C3="A";C3="B");5;2);KDYŽ(NEBO(C4="A";C4="B");5;2);KDYŽ(NEBO(C5="A";C5="B");5;2);KDYŽ(NEBO(C6="A";C6="B");5;2))  
Bože to je ale zvěrstvo. Pozor na délku vzorce v buňce ! Asi by se muselo trochu víc přemýšlet. Jestli ti jde o sloupec s velikostí složek, tak ne. Výpočet a neustálé přepočítávání zbytečně zdržuje a zatěžuje systém. Velikost jednotlivých složek vidíš najetím myší. Hmm, zni to dost zmatene. Nechapu, proc by tabulka z Wordu nesla zkopcit?! A ta druha tabulka v Excelu je zase co? Tak je v Excelu nebo ve Wordu? Neni to kontingencni tabulka? Zkuste pomalu a srozumitelne popsat o co presne jde a uvedomte si, ze jste jedina kdo vi vsechny informace a musite je predat. Ignoruje všechny používá související non-SQL z LINQ a právě s ohledem na LINQ-to-SQL.


LINQ dotazy jsou objekty, které si zachovávají dotazu *definici* a ekvivalentní SQL je instanci pouze v okamžiku dotazu je vlastně opakována. Který umožňuje komponenty musí být řádně odděleny a umožňují **zpracování ve stylu potrubí** , kde jsou dotazy vrácené spodních vrstev (např. Podle údajů) a transformovány vyššími složkami v zásobníku. Dotaz může přizpůsobit nové filtry, se připojí a další ‚artefakty‘ z každé složky ve zpracovatelském potrubí, dokud nedosáhne konečného formulář, který je případně opakována. Tato manipulace je prakticky nemožné pomocí rovné textu SQL.


Další výhodou je, že LINQ jeho syntaxe je snazší pochopit vývojářům non-databáze. SQL syntax odbornost je překvapivě těžké najít aktivum. Několik vývojáři jsou ochotni trávit čas učení jemnější body SQL mimo `SELECT * FROM ... WHERE ...`. Syntaxe LINQ je blíže ke každodenním prostředí .NET a využívá stávající dovednost nastavit v této vrstvě (např. Výrazy lambda) v protikladu k vynucení vývojář naučit správné SQL pro cílené zadní konce (T-SQL, PL-SQL atd). Vzhledem k tomu, že výraz LINQ vyjadřuje požadovaný výsledek do značné míry přímo do relační algebře, poskytovatelé mají mnohem snazší práci do generuje odpovídající SQL (nebo dokonce vytvářet přímou plán provádění!). Srovnejte to s nemožný úkol ‚generické‘ databázové řidiči museli čelit vzácně s textem SQL. Pamatovat ODBC syntaxe escape, někdo? Pokud jsou skutečně stejné a nemají pouze stejnou fyzickou velikost, tak to nemá vliv. Ale často je druhý slot i přes stejnou fyzickou velikost pomalejší, třeba jen 8x nebo 4x. Co napsat rovnou tu desku nebo je tajná?